ios - 在 iOS 设备和 iOS 模拟器上运行的 .a 应该是什么架构

标签 ios xcode x86-64

我已经用来自各种 lib.a 的架构“arm64”、“armv7”和“x86”构建了一个胖库。当我为 iOS 设备编译项目时没有问题,但是当我尝试将它放入 iOS 模拟器时似乎编译出错了。它说“x86_64 的 undefined symbol ”。我可以想象我还需要 x86_64 lib.a 但我想知道我能做些什么来解决这个问题。

注意: 从 OpenHome 手动编译的库

比你好

编辑: 可能是因为来自 Here 的 makefile

最佳答案

作为第一步,请确保您的 fat bin 确实包含 x86_64。 为此,您可以按如下方式使用 cmd 检查。

$ xcrun lipo -info yourLibrary.a

如果你的库肯定包含 x86_64,它应该显示

Architectures in the fat file: yourLibrary.a are: x86_64 arm64 ...

例如,我为我的应用程序编译了 x86_64 和 arm64 的 libpng。 xcrun命令显示如下。

$ xcrun lipo -info libpng.a
  Architectures in the fat file: libpng.a are: x86_64 arm64 

不用说,fat bin 既有 arm64 也有 x86(因为它是 FAT)。所以 fat bin 不需要单独的 x86_64 lib.a,正如你在问题中提到的那样。

检查你的 Makefile 是在你确认你的 fat bin 有 x86_64 之后。

关于ios - 在 iOS 设备和 iOS 模拟器上运行的 .a 应该是什么架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50983234/

相关文章:

iphone - JSON 驱动的 iOS MVC 架构

xcode - 将现有应用程序提交到 iTunes Connect 时出现问题

delphi - 在内联汇编中将常量读入 SSE/AVX 寄存器

visual-studio - 64 位版本的 Visual Studio 2015?

ios - 半透明 modalViewController

ios - 在运行 AFHTTPSessionManager 的 AFNetworking 2 中设置并发任务限制

ios - Google登录权限列表在授权之间进行更改

ios - 带有 NSNumber 的 CoreData

iphone - 我的 Xcode 符号去哪儿了?

c - 为什么编译器在这种情况下使用 32 位寄存器将指针传递给 amd64 linux 上的函数