【发布时间】:2014-08-12 08:30:57
【问题描述】:
我正在构建一个静态库。构建设置将架构设置为:$(ARCHS_STANDARD),显示为Standard Architectures (armv7, armv7s, arm64) 我选择 iOS 设备然后使用模拟器(例如 iPhone Retina)构建库。
现在我有两个构建(一个在 Debug-iphoneos 内部,另一个在 Debug-iphonesimulator 内部,我使用 lipo -create 创建聚合库:
lipo -create path/to/first/lib /path/to/second/lib -o MyLib.a
如果我在另一个项目中使用这个库在任何具有 64 位架构的 iOS 设备上进行模拟,它会给出symbol(s) not found for architecture x86_64。真正让我生气的是,lib 项目本身与另一个使用 lib 的项目位于一个工作区中。我可以在 64 位 iOS 模拟器上进行模拟! (在所有模拟器和设备上)。我做错了什么?
注意事项:
- 这不是重复的 Q。在指责我之前(因为这是我试图解决这个愚蠢问题的第二天),我在 Stack 和 Google 上进行了搜索。所有的答案都没有帮助。
- 我使用的是 Xcode 5.1.1。
【问题讨论】:
-
你用的是操作系统自带的lipo还是Xcode?要使用 Xcode,请运行“xcrun -sdk iphoneos lipo [arguments as before]”。也许这会有所帮助。
-
老实说,我对你的问题感到很困惑,但有两件事要检查......首先你应该看看“构建活动架构”是否设置为是或否。如果它设置为是,那么它只是为那个设备构建的。如果您选择“否”,它将构建所有 3 个。其次,我会从终端输入“file MyLib.a”,它会告诉您胖静态库中实际包含哪些架构。
-
确保“i386 x86_64”和“arm7 arm7s arm64”在您的目标的“VAILD_ARCHS”构建设置下列出。
标签: ios xcode5 64-bit static-libraries