Apple Mach-O Linker编译设备时出错

Cod*_*mit 237 iphone xcode objective-c xcode4

我刚刚升级到xcode 4.0,我无法再部署到iPhone,我得到Apple Mach-O链接器错误,但它仍适用于模拟器.

    Ld /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel normal armv7
    cd /Users/yveswheeler/iParcel
    setenv IPHONEOS_DEPLOYMENT_TARGET 3.2
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -F/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -filelist /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel.LinkFileList -dead_strip -all_load -ObjC -lxml2 -miphoneos-version-min=3.2 -framework UIKit -framework CoreGraphics -framework QuartzCore /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a -framework AddressBook -lz.1.2.3 -framework Foundation -framework CFNetwork -framework MobileCoreServices -framework SystemConfiguration -framework MessageUI -framework AudioToolbox -o /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel

arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a: No such file or directory
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

Gaj*_*han 215

这是永久的解决方案.一般覆盖项目可能会导致这个问题.尝试这种方法.

-UPDATE - Clang错误 - Mach-O链接器错误

在某些情况下,错误日志窗口显示.xctest错误,以解决它

- >选择您的项目

- >除此之外(在General选项卡之前)从下拉列表中选择projectTest文件

- >有一个选项(如ProjNameTests)

- >在主机应用程序中,只有在显示自定义时才从下拉列表中选择项目

DONE!

在此输入图像描述

旧方法已删除

  • 我想我不明白.我该怎么办…? (59认同)
  • 如果我删除框架搜索路径比我得到无法找到头文件 (4认同)
  • 救了我的一天男人.坐在我的老板面前,必须向他展示我正在处理的应用程序,并且我收到此链接器错误.如果没有降落在这里我就走了:D (4认同)
  • 谢谢.清理搜索路径对我有用. (2认同)
  • 最后一步主机应用程序在哪里? (2认同)

Dan*_*iel 195

我有同样的问题,问题是我在一个实现文件中意外导入.m文件而不是.h - 希望它有帮助


小智 73

刚遇到同样的问题.

解决方案(对我来说)=检查你的框架.

在我的情况下,我添加了与CoreData相关的类而没有"CoreData.framework".添加它解决了MACH_O的抱怨.

  • 当您再次链接最新SDK版本中不存在的库时,也会发生这种情况.假设您链接了libz.1.2.3并且sdk包含1.2.5.检查你的框架是一个非常好的建议!谢谢Dante! (6认同)
  • Cocoapods为我链接了两个`libPods.a`文件(因此重复的符号).谢谢,但丁! (2认同)

mah*_*ahi 61

打开.xcworkspace文件而不是.xcodeproj.我重复打开.xcworkspace文件.你的所有错误都会消失.


cat*_*ate 36

回复:标题中概述的问题:

以防万一其他人错过了明显的......

安装新版本的Xcode4并将现有文件拖入新项目后,我遇到了这个错误.我没有发现在"选择添加文件的选项:"对话框中未选中"添加目标"复选框.纠正我在Targets> Build Phases> Compile Sources中的遗漏解决了这个问题.


小智 32

菜单>产品>清洁,这是它的工作原理.我不确定其他人.我添加了图片来显示.

在此输入图像描述


p.p*_*pad 29

奇怪的错误.对我来说,我只是清理并重新启动了Xcode,问题就消失了.

  • 干净的xCode是:Shift + Command + K,适合那些想要尝试的人 (4认同)

Seb*_*ara 26

修复:构建设置>启用Bitcode>否 在此输入图像描述


Joh*_*nes 21

这些答案都没有帮助我.然后我尝试重新安装Cocoapods:

pod deintegrate

pod install
Run Code Online (Sandbox Code Playgroud)

问题解决了!


Cod*_*mit 20

问题在于,在XCode 4中,依赖关系并不假设主项目的体系结构设置,就像之前在XCode 3中所做的那样.我必须遍历所有依赖关系,为正确的体系结构设置它们.

  • 谢谢!我完成了错误的事实,来自链接器的错误消息抱怨"找不到文件",而不是"找到文件,但我不能使用它......",并且正在浏览xcode设置寻找库搜索路径.但这对我有用.如果你有这个问题,这篇文章也是相关的:http://stackoverflow.com/questions/2999844/three20-and-ios-4.此外,这个很好的摘要博客:http://www.amirnaor.com/?p = 112 (2认同)

Wol*_*ert 13

我有同样的,并设法解决它.

在xcode 首选项中,位置选项卡将构建位置下的值更改为" Place build products in locations specified by targets".

  • 选项在XCode 5.1中不可用 (6认同)

小智 13

我挣扎了一段时间,在我的情况下,它最终成为搜索路径下的构建设置,称为FRAMEWORK_SEARCH_PATHS.这有助于我选择"级别"按钮,它似乎比较了我的项目,目标和"已解决"设置.我看到我的目标设置以某种方式覆盖了默认值"$(inherited)",被覆盖的值是XCode"解析"设置的原因.当我删除覆盖时,在这种情况下指定了3.2 sdk,链接器错误消失了 - 最近出现了一些关于我调用4.0后方法的类的警告.

关于那些警告 - 在我为最近的更改添加MessageUI框架之前,我从未见过它们.我怀疑,但不确定,当我添加该框架时,XCode试图通过向我的目标添加覆盖来做一些聪明的事情.我在任何时候都没有明确地做过.例如,警告是关于NSURL的URLByAppendingPathComponent方法,该方法直到sdk 4.0才出现.在添加MessageUI框架之前,我从未收到过警告.因为我删除了覆盖,我不再得到它们.


jmo*_*man 11

我有这个问题并导入QuartzCore修复它.


Nis*_*air 8

在CordovaLib.xcodeproj - > Build Settings中将"Build Active Architectures Only"更改为Yes是我的诀窍.之前应用程序在模拟器上运行,但不在设备上运行.


Mac*_*ade 7

您可能需要更新构建设置.

验证iOS目标版本和处理器体系结构,因为您可能没有使用XCode 4的旧SDK.

您可能会在构建设置上看到"缺少SDK".将其改为适用的任何内容.


Mis*_*nko 7

我有同样的问题:只是意外删除了.m文件,而.h在项目中.当我恢复.m文件时,问题就消失了.


Gra*_*yer 6

检查以确保您没有指定特定的框架搜索路径.如果您转到目标上的信息并删除框架搜索路径条目,则应使用指定部署版本的默认值.


Kju*_*uly 5

我只是尝试创建一个category class文件并得到这个奇怪的问题......最后....

创建导致问题的类别的错误方法:

New File- > Cocoa Touch- > Objective-C class,然后我将文件名修改为Category Class,如 name ..(即OriginalClass_CategoryName.h/mto OriginalClass+CategoryName.h/m,并且还修改了文件中的内容).

正确的方式:

New File- > Cocoa Touch- > Objective-C category,它会自动生成文件(OriginalClass+CategoryName.h/m).

哦,我多么愚蠢!!


Fla*_*viu 5

如果您使用的是CoreData,并且使用XCode为实体生成NSManagedObject子类,请确保仅为每个实体生成一个子类.

我的问题是它为同一个实体生成了多个NSManagedObject子类(并将它们放在不同的文件夹中).

我刚刚删除了所有这些并重新生成了NSManagedObject子类.


she*_*ock 5

要添加修复此问题的奇怪内容列表...

我在全局头文件中有一些const CGFloat变量,如此

const NSInteger  globalInteger1 = 2;
const NSInteger  globalInteger2 = 3;
Run Code Online (Sandbox Code Playgroud)

我删除这些的那一刻,一切都很好:)


Ade*_*ici 5

我有完全相同的问题,因为我在不同的类中有两个相同的常量.如果导入.m文件而不是.h文件,也可能会出现此问题