每次我从CocoaPods导入文件时,我都会得到一个Apple Mach-O链接器错误。

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

我有大约12个这样的耳机,用于我使用的各种pod。

我试图使用XCode 5为iPhone 5S构建。

我一直在尝试各种解决方案这里所以,但还没有得到任何工作。

我如何解决这个苹果Mach-O链接错误?


刚刚发现了另一个可能很有趣的警告,我希望这能让我找到解决方案:

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a


当前回答

我知道这是一个古老的分支。然而,在迁移到最新的CocoaPods版本(1.0.0)并试图重新安装所有pod后,同样的问题开始发生在我身上。我遇到了“armv64缺失符号”链接错误。 奇怪的是,我通过以下步骤解决了这个问题:

删除所有pod (pod init, 舱安装) 以相反的顺序重写podfile(而不是: 豆荚“Mixpanel年”, 豆荚“对讲机”, 我使用: 豆荚“对讲机”, 豆荚”“Mixpanel ) 圆荚体安装

颠倒podfile中依赖关系的顺序并重新构建pods解决了这个问题。

其他回答

这招对我很管用:

Ios SDK 9.3

进入app.xcodeproj的构建设置 有效架构:armv7 armv7s 构建活动架构:不

干净又结实,对我很管用。

下面是为什么build_active_architecture设置为NO的一些解释。 Xcode现在会检测你连接了哪些设备,并相应地设置活动架构。所以如果你把第二代iPod Touch插到你的电脑上,Xcode应该把活动架构设置为armv6。用上面的Debug配置构建你的目标现在只构建armv6二进制代码来节省时间(除非你有一个巨大的项目,你可能没有注意到区别,但我猜时间会随着时间的推移而增加)。

当你创建一个发布到App Store的Distribution配置时,你应该确保这个选项没有设置,这样Xcode就会构建一个肥胖的通用二进制文件 http://useyourloaf.com/blog/2010/04/21/xcode-build-active-architecture-only.html

当morisunshine的回答指向正确的方向时,他的回答中的一个小调整解决了我的iOS8.2问题。

我通过设置来解决这个问题:

ARCHS = armv7

VALID_ARCHS = armv6 armv7 armv7s arm64

BUILD ACTIVE ARCHITECTURE ONLY= NO

如果使用c++编写的.framework/.a文件,在调用c++代码时,其文件需要更改为.mm文件。

我浪费了半天时间……

OPN [Debug]目标覆盖OTHER_LDFLAGS构建设置。这是主要问题。在添加$(继承)在其他链接器标志的新行解决了我的问题。