首页 文章

错误:“文件是为归档而构建的,而不是被链接的架构(armv7s)”

提问于
浏览
42

我已经构建了自己的静态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 回答

  • 33

    在构建库时,必须为模拟器和设备编译它,然后将两个输出(.a文件)合并到1个库中,然后将其链接到iOS项目 .

  • 23

    我自己遇到了类似的问题 . @graver 的解决方案绝对有效 .

    问题是该库是为 armv7 而不是 armv7s 构建的 . 您可以使用 lipo <path/to/lib.a> -info 自行验证 .

    Build Active Architectures Only 选项设置为 No 可解决此问题 .

    希望这可以帮助 .

  • 2

    另外一个注意事项是:

    Build Active Architectures Only  set to no
    

    是为了lib项目 .

  • 7

    使用cocapods时,我得到了完全相同的错误:对我来说,解决方案是为目标和pod设置两个不同的Build Active Architecture .

    应用目标:

    Build Active Architectures Only  **Yes**
    

    beans 荚目标

    Build Active Architectures Only  **No**
    
  • 36

    不幸的是,所有这些建议都不适合我 - Xcode 7.3.1(7D1014),iPhone 5.但是一旦我删除了所有Xcode临时文件(重新启动Xcode)并重新重建它就开始工作了 .

  • 1

    通过CocoaPods使用的Facebook SDK(v 4.24.0)确实发生了这种情况 .

    在Pod上清理或设置 Build Active Architectures OnlyNO 无法解决问题 .

    解决方案是清空构建目录(请参阅构建设置/构建位置/ CONFIGURATION_BUILD_DIR)或 $(CONFIGURATION_BUILD_DIR) Xcode变量 .

  • 0

    我使用XCode 5.1.1并遇到了所描述的问题 . 解决此问题的一种更方便的方法似乎只是创建一个存档(通过菜单构建/存档)并分发它 . 分布式lib文件将包含所有已定义的体系结构 .

相关问题