首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:“文件是为存档构建的,这不是正在链接的体系结构(armv7s)”

错误:“文件是为存档构建的,这不是正在链接的体系结构(armv7s)”
EN

Stack Overflow用户
提问于 2013-02-12 08:50:05
回答 7查看 35.3K关注 0票数 42

我已经构建了自己的静态C++库,它使用以下设置构建:

  • 体系结构: armv7,armv7s
  • 仅构建主动架构:否
  • 支持平台: iOS
  • 有效架构: armv7,armv7s

库项目构建良好,我获得了.a文件(我已经清理了build文件夹,并再次构建了该项目,以确保我的设置是有效的)。

我已经将库(.a文件)添加到我的iOS项目中,但是即使在iOS项目上设置了完全相同的设置,该项目也不会构建:

  • 体系结构: armv7s,armv7
  • 仅构建主动架构:是的
  • 支持平台: iOS
  • 有效架构: armv7,armv7s

我一直在犯这个错误:

/Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a,ld:警告:忽略文件文件是为存档而构建的,这不是正在链接的体系结构(armv7s): /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a

我遗漏了什么?它告诉我.a文件不是为armv7s构建的,但这正是我构建库时使用的设置。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-02-12 08:56:47

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

票数 33
EN

Stack Overflow用户

发布于 2013-06-22 03:09:05

我自己也遇到了一个类似的问题。@graver的解决方案绝对是有效的。

问题是这个库是为armv7而不是armv7s构建的。您可以使用lipo <path/to/lib.a> -info亲自验证这一点。

Build Active Architectures Only选项设置为No解决了问题。

希望这能有所帮助。

票数 36
EN

Stack Overflow用户

发布于 2014-03-08 10:09:02

另一项说明是:

代码语言:javascript
复制
    Build Active Architectures Only  set to no

用于lib项目。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14828693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档