我已经用来自各种 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/