我已经构建了自己的静态C库,它使用以下设置构建:
-
架构:armv7,armv7s
-
仅构建活动架构:否
-
支持平台:iOS
-
有效架构:armv7,armv7s
库项目构建良好,我得到.a文件(我已经清理了构建文件夹并再次构建项目以确保我的设置有效) .
我已将库(.a文件)添加到我的iOS项目中,但即使我在iOS项目中设置了完全相同的设置,项目也无法构建:
-
架构:armv7s,armv7
-
仅构建活动架构:是的
-
支持平台:iOS
-
有效架构:armv7,armv7s
我一直收到这个错误:
ld:警告:忽略文件/Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a,文件是为存档而构建的,而不是被链接的架构(armv7s ):/ Users / hidden / Library /Developer / Xcode / DelivedData / HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a
我错过了什么?它告诉我.a文件不是为armv7s构建的,但这正是我用库构建的设置 .
7 回答
在构建库时,必须为模拟器和设备编译它,然后将两个输出(.a文件)合并到1个库中,然后将其链接到iOS项目 .
我自己遇到了类似的问题 .
@graver
的解决方案绝对有效 .问题是该库是为
armv7
而不是armv7s
构建的 . 您可以使用lipo <path/to/lib.a> -info
自行验证 .将
Build Active Architectures Only
选项设置为No
可解决此问题 .希望这可以帮助 .
另外一个注意事项是:
是为了lib项目 .
使用cocapods时,我得到了完全相同的错误:对我来说,解决方案是为目标和pod设置两个不同的Build Active Architecture .
应用目标:
beans 荚目标
不幸的是,所有这些建议都不适合我 - Xcode 7.3.1(7D1014),iPhone 5.但是一旦我删除了所有Xcode临时文件(重新启动Xcode)并重新重建它就开始工作了 .
通过CocoaPods使用的Facebook SDK(v 4.24.0)确实发生了这种情况 .
在Pod上清理或设置
Build Active Architectures Only
为NO
无法解决问题 .解决方案是清空构建目录(请参阅构建设置/构建位置/ CONFIGURATION_BUILD_DIR)或
$(CONFIGURATION_BUILD_DIR)
Xcode变量 .我使用XCode 5.1.1并遇到了所描述的问题 . 解决此问题的一种更方便的方法似乎只是创建一个存档(通过菜单构建/存档)并分发它 . 分布式lib文件将包含所有已定义的体系结构 .