首页 > 解决方案 > 在 iOS 设备和 iOS 模拟器上运行的我的 .a 应该是什么架构

问题描述

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

注意:从OpenHome手动编译的库

比你

编辑:可能是因为这里的makefile

标签: iosxcodex86-64

解决方案


作为第一步,请确保您的 fat bin 是否确实包含 x86_64。为此,您可以按如下方式检查 w/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 不需要你在 q 中提到的单独的 x86_64 lib.a。

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


推荐阅读