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

标签 ios xcode6.1

在 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/

相关文章:

ios - 如何在 iOS 客户端中解码来自 SimpleMembership 的哈希字符串?

ios - 你如何检查 NSURLRequest.URL 是否为零?

ios - 未找到构建 ios 应用程序 <React/RCTUtils.h> 时 React Native 中的词法或预处理器问题

ios - 与协议(protocol)相关的 SourceKitService 崩溃?

swift - NSFontAttributedString 在 XCode 6.1 之前工作

ios - 在 iOS 8.1 模拟器上更改语言不起作用

debugging - iOS 应用程序在 iOS 8.1 调试器下运行时崩溃,但在调试器外部的设备或模拟器上运行时不会崩溃

iphone - App Store 分发配置文件与开发配置文件

ios - 将 NSData Length 从 bytes 转换为 megs

swift - 如何在 Swift(Xcode 6.1) 中实现 Interstitial iAds