首页 文章

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

提问于
浏览
236

我刚刚升级到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

30 回答

  • 3

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

    -UPDATE - Clang error - Mach-O Linker error

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

    • 选择您的项目

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

    • 有一个选项(如ProjNameTests)

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

    DONE!

    enter image description here

    Old method deleted

  • 36

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

  • 8

    刚遇到同样的问题 .

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

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

  • 4

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

  • 4

    回复: Headers 中概述的问题:

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

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

  • 31

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

    enter image description here

  • 5

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

  • 4

    修复:构建设置>启用Bitcode>否
    enter image description here

  • 26

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

  • 56

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

    pod deintegrate
    
    pod install
    

    问题解决了!

  • 20

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

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

  • 7

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

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

  • 13

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

  • 73

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

  • 4

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

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

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

  • 3

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

  • 6

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

  • 195

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

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

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

    正确的方式:

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

    哦,我多么愚蠢!!

  • 7

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

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

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

  • 20

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

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

    const NSInteger  globalInteger1 = 2;
    const NSInteger  globalInteger2 = 3;
    

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

  • 11

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

  • 13

    不确定是否's related, but seeing that you'正在运行一些三十二个图书馆,你可能想在他们的网站上查看这篇文章:http://three20.info/article/2011-03-10-Xcode4-Support

  • 29

    我有同样的问题,我解决了 . 就我而言,“架构”设置导致了问题 . 在我的项目文件Build Settings选项卡中,Architectures设置为armv6 . 我把它改为Standard(armv7),做清理和构建 . 然后它工作了!

  • 4

    在我的情况下,问题是在不同的目标下指定了不同的架构 . 我用armv6,armv7和cocos2d用Standard(amrv7)构建我的应用程序目标 . 进入构建设置并确保您的架构同意所有目标 .

  • 214

    我解决这个问题太奇怪了!

    转到 Target >构建 Phases > Link Binary with libraries

    删除所有框架并再次添加它们!

    希望这对你有用 !

  • 5

    对于Swift语言......

    我收到此错误“ld:文件太小(长度= 0)....”

    在我的情况下,我只是清理项目,然后重建它..

    脚步:-

    1)转到项目 - >清洁

    2)转到项目 - >构建

    希望这可以帮助..

  • 4

    这对我来说很有用:

    1)产品> clean

    2)Windows> Projects

    3)选择您的项目,然后单击“ Deletederived Data

    4)产品> Build

  • 5

    一种可能性:在Xcode 4构建设置中打开“死代码剥离” .

    另一种可能性:可能是您切换到使用LLVM用于以前使用GCC的某个框架 . 回到GCC(或LLVM GCC)可能会消除这些警告 .

  • 5

    我错误地在一个不同的文件中定义了一个与现有常量同名的新常量,并且使用xCode 4.3.1给我造成了这个错误 . xCode没有抱怨,但编译器不喜欢它 .

  • 3

    我能够通过编辑“库搜索路径”来修复此错误

    它首先出现了,因为我已经移动了几个文件夹,最终为我的构建设置提供了两个不同的搜索路径,因为它们会在链接库/框架时自动添加到构建设置中,但它们不是永远删除 .

    因此,如果将链接库/框架移动到其他目录并重新链接,则必须手动编辑搜索路径 .

    您可以通过在移动它之前删除库/框架来避免这种情况,但我还没有测试过 .

相关问题