gpt4 book ai didi

ios - Xcode 6.1 文件中缺少所需的体系结构 X86_64

转载 作者:IT王子 更新时间:2023-10-29 07:38:37 29 4
gpt4 key购买 nike

在 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 的问题,并尝试了所有给定的解决方案,但没有任何效果。

更新 - 我尝试了答案中建议的更改,但我仍然不断收到“缺少必需的体系结构 X86_64”错误。在进一步调查中,我发现我的库中的文件 ClientAuthenticator.o 不是为 X86_64 架构构建的,可能这就是问题所在?我正在寻找如何为 x86_64 构建它。

我的新问题是arm64 和x86_64 有什么区别?更多的似乎只是架构制造商之间的差异,但基本的 64 位架构保持不变。

最佳答案

  • 您应该确保的第一件事是您的静态库具有所有架构。当你在终端上执行 lipo -info myStaticLibrary.a 时 - 你应该看到你的 fat 二进制文件的 armv7 armv7s i386 x86_64 arm64 架构。

  • 为此,我假设您正在制作通用二进制文件 - 将以下内容添加到静态库项目的体系结构设置中 -

enter image description here

  • 因此,您可以看到我必须手动设置静态库项目的标准架构(包括 64 位)(armv7、armv7s、arm64)

enter image description here

  • 或者,由于普通的 $ARCHS_STANDARD 现在包括 64 位。您还可以执行 $(ARCHS_STANDARD)armv7s。在没有它的情况下检查 lipo -info,您将找出缺失的架构。这是所有架构的屏幕截图 -

enter image description here

  • 供您引用实现(使用静态库的项目)。默认设置应该可以正常工作 -

    enter image description here

14 年 3 月 12 日更新Xcode 6 标准架构不包括 armv7。

那么,armv7s 不是必需的吗?是的。似乎 armv7 和 armv7s 指令集之间的一般差异很小。因此,如果您选择不包含 armv7s,目标 armv7 机器代码在 32 位 A6 设备上仍然可以正常运行,几乎没有人会注意到性能差距。 Source

如果 Xcode 6.1+(iOS 8.1 及更高版本)有更智能的方法 - 请分享。

关于ios - Xcode 6.1 文件中缺少所需的体系结构 X86_64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552855/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com