在 Xcode 6.1 中,我收到 iPhone 6、iPhone 5s(iOS 7.1) 的错误,其中显示
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_ClientAuthenticator", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
linker command failed with exit code 1
这就是我对架构设置的看法
Architectures : Standard Architectures(armv7, arm64) - $(ARCHES_STANDARD)
Base SDK : Latest iOS(8.1)
Valid Architectures: arm64, armv7, armv7s
IOS Deployment Target: iOS 6.0
最近我将操作系统从 6.0 更新到 Yosemite 和 Xcode 6.1。我在 Stack Overflow 上搜索了这个涉及 Xcode 5.1 的问题,并尝试了所有给定的解决方案,但没有任何效果。
Update- 我尝试了答案中建议的更改,但我仍然不断收到错误消息“缺少所需的架构 X86_64“。经过进一步调查,我发现来自我的库的文件 ClientAuthenticator.o 不是为 X86_64 架构构建的,这可能就是问题所在?我正在寻找如何为 x86_64 构建它。
我的新问题是arm64 和 x86_64 有什么区别?更多看起来只是架构制造商之间的差异,但基本的 64 位架构保持不变。
- 所以,你可以看到我必须手动设置
Standard architectures (including 64-bit) (armv7, armv7s, arm64)
静态库项目的。
- 或者,由于正常
$ARCHS_STANDARD
现在包括 64 位。你也可以做$(ARCHS_STANDARD)
and armv7s
. Check lipo -info
没有它,你就会找出缺失的架构。这是所有架构的屏幕截图 -
2014 年 12 月 3 日更新
Xcode 6 标准架构不包括armv7s。
So, armv7s
不需要吗?是的。看起来armv7 和armv7s 指令集之间的总体差异很小。因此,如果您选择不包含armv7s,则目标armv7机器代码在32位A6设备上仍然可以正常运行,并且几乎没有人会注意到性能差距。Source
如果 Xcode 6.1+(iOS 8.1 及更高版本)有更智能的方法 - 请分享。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)