我刚刚升级到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
答案 0 :(得分:214)
这是永久的解决方案。一般覆盖项目可能会导致这个问题。尝试这种方法。
-UPDATE - Clang错误 - Mach-O链接器错误
在某些情况下,错误日志窗口显示.xctest错误,以修复它
- >选择你的项目
- >除此之外(在常规选项卡之前)从下拉列表中选择projectTest文件
- >有一个选项(如ProjNameTests)
- >在主机应用程序中,只有在显示自定义
时才从下拉列表中选择项目DONE!
旧方法已删除
答案 1 :(得分:195)
我遇到了同样的问题,问题是我在实现文件中意外导入.m文件而非.h文件 - 希望有帮助
答案 2 :(得分:73)
刚遇到同样的问题。
解决方案(对我来说)=检查你的框架。
在我的情况下,我添加了与CoreData相关的类而没有“CoreData.framework”。添加它解决了MACH_O抱怨。
答案 3 :(得分:57)
打开.xcworkspace文件而不是.xcodeproj。我重复打开.xcworkspace文件。你的所有错误都会消失。
答案 4 :(得分:36)
回复:标题中列出的问题:
以防万一其他人错过了明显的......
我在安装新版本的Xcode4并将现有文件拖入新项目后遇到此错误。我没有发现在“选择添加文件的选项:”对话框中未选中“添加目标”复选框。纠正我在Targets> Build Phases> Compile Sources中的遗漏解决了这个问题。
答案 5 :(得分:31)
菜单>产品>清洁,这是它的工作原理。我不确定其他人。我添加了图片来显示。
答案 6 :(得分:29)
奇怪的错误。对我来说,我只是清理并重新启动Xcode,问题就消失了。
答案 7 :(得分:26)
答案 8 :(得分:20)
这些答案都没有帮助我。然后我尝试重新安装Cocoapods:
pod deintegrate
pod install
问题解决了!
答案 9 :(得分:20)
问题在于,在XCode 4中,依赖项并不假设主项目的体系结构设置,就像它们之前在XCode 3中所做的那样。我必须遍历所有依赖项,为正确的体系结构设置它们。
答案 10 :(得分:13)
我有同样的并设法解决它。
在xcode 首选项中,位置标签将构建位置下的值更改为“Place build products in locations specified by targets"
。
答案 11 :(得分:13)
我挣扎了一会儿,在我的情况下,它最终成为搜索路径下的构建设置,称为FRAMEWORK_SEARCH_PATHS。这有助于我选择“级别”按钮,它似乎比较了我的项目,目标和“已解决”设置。我看到我的目标设置以某种方式覆盖了默认值“$(inherited)”,被覆盖的值是XCode“解析”设置的原因。当我删除了覆盖,在这种情况下指定了3.2 sdk时,链接器错误消失了 - 最近出现了一些关于我调用4.0后方法的类的警告。
关于这些警告 - 在我为最近的更改添加MessageUI框架之前,我从未见过它们。我怀疑,但不确定,当我添加该框架时,XCode试图通过向我的目标添加覆盖来做一些聪明的事情。我在任何时候都没有明确地做过。例如,警告是关于NSURL的URLByAppendingPathComponent方法,该方法直到sdk 4.0才出现。在添加MessageUI框架之前,我从未收到过警告。因为我删除了覆盖,我不再得到它们。
答案 12 :(得分:11)
我遇到了这个问题并导入QuartzCore
修复了它。
答案 13 :(得分:8)
在CordovaLib.xcodeproj中将“仅构建活动架构”更改为“是” - > Build Settings为我做了诀窍。之前应用程序在模拟器上运行,但不在设备上运行。
答案 14 :(得分:7)
我遇到了同样的问题:只是意外删除了.m文件,而.h在项目中。 当我恢复.m文件时,问题就消失了。
答案 15 :(得分:7)
您可能需要更新构建设置。
验证iOS目标版本和处理器体系结构,因为您可能没有使用XCode 4的旧SDK。
您可能会在构建设置上看到“缺少SDK”。将其更改为适用的任何内容。
答案 16 :(得分:6)
检查以确保您没有指定特定的框架搜索路径。如果你转到目标上的信息并删除框架搜索路径条目,它应该使用指定部署版本的默认值。
答案 17 :(得分:5)
我只是尝试创建一个category class
文件并得到了这个奇怪的问题......最后......
错误创建导致问题的类别类的方法:
New File
- > Cocoa Touch
- > Objective-C class
,然后我将文件名修改为类别类,如名称..(即OriginalClass_CategoryName.h/m
到OriginalClass+CategoryName.h/m
,并修改了文件中的内容)
New File
- > Cocoa Touch
- > Objective-C category
,它会自动生成文件(OriginalClass+CategoryName.h/m
)。
哦,我多么愚蠢!!
答案 18 :(得分:5)
如果您正在使用CoreData,并且使用XCode为您的实体生成NSManagedObject子类,请确保您只为每个实体生成一个子类。
我的问题是它为同一个实体生成了多个NSManagedObject子类(并将它们放在不同的文件夹中)。
我刚刚删除了所有这些并重新生成了NSManagedObject子类。
答案 19 :(得分:5)
要添加修复此问题的奇怪内容列表......
我在全局头文件中有一些const CGFloat变量,如此
const NSInteger globalInteger1 = 2;
const NSInteger globalInteger2 = 3;
我删除这些的那一刻,一切都很好:)
答案 20 :(得分:5)
我有完全相同的问题,因为我在不同的类中有两个相同的常量。如果导入.m文件而不是.h文件
,也会出现此问题答案 21 :(得分:4)
对于Swift语言......
我收到此错误" ld:文件太小(长度= 0)...."
在我的情况下,我只是清理项目,然后重建它..
步骤: -
1)转到项目 - >清洁
2)转到项目 - >构建
希望这会有所帮助..
答案 22 :(得分:4)
这对我来说很有用:
转到
1)产品>的清洁强>
2)Windows&gt; <强>项目强>
3)选择您的项目并点击&#34; 删除&#34; 派生数据
4)产品&gt; <强>构建强>
答案 23 :(得分:4)
我解决这个问题太奇怪了!
转到目标&gt;构建阶段&gt; 将二进制文件链接到库:
删除所有框架并重新添加它们!
希望它适合你!
答案 24 :(得分:4)
在我的情况下,问题是在不同的目标下指定了不同的架构。我用armv6,armv7和cocos2d用Standard(amrv7)构建我的应用程序目标。进入构建设置并确保您的架构同意所有目标。
答案 25 :(得分:4)
我有同样的问题,我解决了。 就我而言,“架构”设置导致了问题。 在我的项目文件Build Settings选项卡中,Architectures设置为armv6。我把它改为Standard(armv7),做清理和构建。然后它奏效了!
答案 26 :(得分:4)
不确定它是否相关,但是看到您运行了大约三个图书馆,您可能需要在他们的网站上查看此帖子:http://three20.info/article/2011-03-10-Xcode4-Support
答案 27 :(得分:3)
对我来说,它意外导入了一个实现“.m”文件而不是相应的标题“.h”文件。一旦我发现项目构建恢复正常。
答案 28 :(得分:3)
对我来说问题是我已经加载了两次相同的功能。从构建设置&gt;中删除-ObjC
关联&gt; 其他链接标记。
答案 29 :(得分:3)
如果您使用相同的名称定义了NSObject,如:
NSObject *notUniqueObj;
即使在2个不同的文件中(如果你要在另一个文件中导入),它也会给你一个错误。为那些提供不同的名称。
答案 30 :(得分:3)
Code Signinig !!!
我也有这个问题 - &#34;链接器命令失败,退出代码为1(使用-v查看调用)&#34;
我的问题是我尝试在真实设备上运行该应用,但我忘记在构建设置 代码签名 部分>标签。
答案 31 :(得分:3)
我能够通过编辑“图书馆搜索路径”来修复此错误
它首先出现了,因为我已经移动了几个文件夹,最终为我的构建设置提供了两个不同的搜索路径,因为它们会在链接库/框架时自动添加到构建设置中,但是他们并不总是被删除。
因此,如果将链接库/框架移动到其他目录并重新链接,则必须手动编辑搜索路径。
你可以通过删除库/框架之前移除它,但我还没有测试过。
答案 32 :(得分:3)
我在一个不同的文件中错误地定义了一个与现有常量同名的新常量,并且使用xCode 4.3.1导致了这个错误。 xCode没有抱怨,但编译器不喜欢它。
答案 33 :(得分:3)
一种可能性:在Xcode 4构建设置中打开“死代码剥离”。
另一种可能性:可能是您切换到使用LLVM用于以前使用GCC的某个框架。回到GCC(或LLVM GCC)可能会消除这些警告。
答案 34 :(得分:2)
我正在运行xcode 5
。在我的情况下,我要改变我的“部署目标”。它以前设置为3.0,我将其更改为7.0。现在错误消息消失了。要更改“部署目标”,
按照步骤:
将其更改为当前的iOS版本。 -Thanks。
答案 35 :(得分:2)
这个问题的解决方法很简单 只需转到项目安装目录并打开文件 扩展名为“ .xcworkspace”
那将解决问题。
答案 36 :(得分:2)
我无意中尝试编译64位模拟器,这与我的CocoaPods不一致
答案 37 :(得分:2)
我对同样问题的修复:在“Project”中添加“其他链接器标志”,而不是在“Targets”中添加。 所以,我把它移到了“目标”,它不应该在“项目”中。
答案 38 :(得分:2)
在我的情况下,我复制了一个类文件!通过使用Xcode右侧栏的底部搜索字段找到它,所以要解决它删除其中一个的引用
答案 39 :(得分:2)
对于我来说,在XCode 4.5.x中运行设备时,架构是错误的。
XCode 4.5不再支持armv6了,所以我的修复是:
我刚刚编辑了所有库中的所有目标(three20Core,three20Common等)和libThree20:在构建设置中,在“架构”和“有效架构”中仅选择了armv7和armv7
答案 40 :(得分:1)
我的问题是因为我没有在我的一个头文件中将变量定义为extern,而是在.c文件中重新声明。
答案 41 :(得分:1)
我不小心添加了UITableViewController的同一子类的两个副本。删除其中一组文件可以清除错误。
答案 42 :(得分:1)
如果您收到Mach-O链接器警告或错误“未找到目录选项”,请查找该目录的路径。如果缺少,请尝试下载最新版本的RestKit并手动放入该文件夹。
答案 43 :(得分:0)
我必须确保我的框架是使用选择的模拟器构建的,以便使用模拟器构建我的项目(我的项目当然是使用框架)。同样适合在我的iPhone上构建一切都必须同步不确定原因,但它解决了问题。
我希望这有助于某人。
答案 44 :(得分:0)
就我而言,Apple Mach-O Linker错误的原因是源代码文件(.m)包含在资源包目标中。
验证捆绑包中是否包含最近创建的.m文件:在项目导航器中选择文件,打开文件检查器并确保在Target Membership
部分取消选择资源包复选框。
答案 45 :(得分:0)
在我的情况下,我包含.m文件,这就是为什么编译器显示此类错误。
您应检查不是.m文件“ Sometime i”的最新文件导入
答案 46 :(得分:0)
在我自己的情况下,我有一些键的重复声明。我使用extern关键字声明了一些NSString常量,并在两个不同的类文件中做了完全相同的事情。当我删除其中一个时,错误就消失了。
extern NSString *const CFDataStatusKey;
extern NSString *const CFDataErrorKey;
extern NSString *const CFDataReasonKey;
extern NSString *const CFDataChannelsKey;
这些在两个类的.h和.m文件中分别声明和初始化。删除副本解决了问题。希望这有帮助
答案 47 :(得分:0)
我的问题是在多个class.m文件中我创建了一个名为TAG的NSString,并且我已经将TAG的值设置为每个类的String名称(例如:NSString * TAG = HWGuiControl)。我这样做了,然后很容易在我的NSLog语句前面加上类的名称。 (我在Android中使用这个系统非常成功,非常适合2年后分析程序流程)。部署到设备,这一切都很好。但是当它创建一个Archive进行分发时,显然链接器无法与多个文件中出现的名为TAG的NSString竞争。将TAG的名称修改为HWGTAG等,就可以了。
答案 48 :(得分:0)
请转到您的工作区设置并进行以下更改:
Workspace Setting:
Build System:
Legacy BuilPer-User
Per-User Workspace
DerivedData:
Workspace relative location
Build System
Use User Setting
答案 49 :(得分:0)
使用CocoaPod,首先安装然后打开工作区,而不是CocoaPod website中指定的项目。
$ pod install
$ open YOUR_PROJECT_NAME.xcworkspace
答案 50 :(得分:0)
如果您使用Xcode 7或更高版本,只需购买产品 - &gt;清洁。这对我有用。
答案 51 :(得分:0)
如果你使用XCode创建一个自定义的NSManagedObject类然后添加它并为自定义类生成一个新文件,有时候XCode不会覆盖你的旧类,你会遇到两个相同的文件,但是不同的目录。找到旧文件并将其删除。
问题可能是其他问题。
答案 52 :(得分:0)
我修改了它,修改了从Nothing到Executable的Build settings上的链接部分下的Mach-O Type。
答案 53 :(得分:0)
导入框架后我遇到了这个问题。在&#39; Build Phases&#39;下,框架的名称以红色突出显示。我再次添加了框架,问题解决了。
答案 54 :(得分:0)
请按照以下步骤解决此问题:
转到项目设置和构建选项卡。搜索 “其他链接标记”
双击Release and Change的链接器标志:
${TARGET_BUILD_DIR}/libCordova.a to ${BUILT_PRODUCTS_DIR}/libCordova.a
对 调试 执行相同的操作 再次 清除 和 构建 存档。
答案 55 :(得分:0)
我在xcode 4.6中导出FMDB模块时遇到了同样的问题。 后来我在我的文件列表中发现了一个导致此问题的fmdb.m. 我从项目中删除后工作正常
答案 56 :(得分:0)
在我的情况下,我只是将.h .m文件从一个文件夹移动到另一个文件夹,并且该文件夹不存在于后面。所以我首先在finder上创建文件夹,然后在finder上移动文件,然后添加该文件夹并删除已移动的文件的引用,从项目停止给我错误
答案 57 :(得分:0)
一分钟前我遇到了同样的问题。这引导我到这里,这没有任何帮助。但我弄清楚是什么问题并修复了它。问题是在我的头文件中我声明了一个名为trig_node [SIZE]的结构类的实例
我的标题......
struct TrigNode
{
float msin;
float mcos;
float mtan;
}trig_node[SIZE];
在我的.cpp文件中,我有一个访问此实例并返回答案的函数。
float cos_table_(float deg)
{
uint n = ((SIZE/DEGRE)*deg);
return trig_node[n % DEGRE].mcos;
}
导致我的链接错误。 因此,为了解决这个问题,我将.cpp文件中的trig表类“trig_node [SIZE]”的实例放在了清除错误的位置。所以现在新修补程序看起来像这样
我的标题......
struct TrigNode
{
float msin;
float mcos;
float mtan;
};
我的.cpp文件 trig_node [SIZE]
float cos_table_(float deg)
{
uint n = ((SIZE/DEGRE)*deg);
return trig_node[n % DEGRE].mcos;
}
答案 58 :(得分:0)
如果您导入了同一个库的两个不同版本,也会发生此错误,在这种情况下只删除旧版本并只保留一个版本,Magic将适合您。
答案 59 :(得分:0)
我只需使用main()
方法处理文件,Xcode对此并不高兴。
答案 60 :(得分:0)
你能尝试Unity-Build设置 - 播放器设置 - SDK版本:设备SDK 而不是模拟器sdk
我有这样的错误并修复了它
答案 61 :(得分:0)
我遇到了这个问题,弄清楚我的XCODE项目中有两个引用。只需删除其他参考。希望这有帮助
答案 62 :(得分:0)
我有同样的问题,因为我将一些文件.h和.m拖到我的项目中,Xcode开始向我显示此错误 clang:错误:链接器命令失败,退出代码为1(使用-v查看运行时调用。
后来我发现我已经有了.h&amp; .m在我的Xcode项目中的其他一些SubFolder下。所以我删除了Extra .h和.m,清理了我的项目及其现在的工作。clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)此错误有多种原因,这就是为什么这个问题有这么多答案。你只需要看看&amp;校验;你是什么情况。
答案 63 :(得分:0)
我认为最好的回应是调查文件导入,有些导入有问题。
示例: 包括#import&#34; file.m&#34; 要么 包括外部file.h
...
答案 64 :(得分:0)
我的具体错误是:
ld: entry point (_main) undefined. for architecture armv7
这应该是显而易见的,但这是因为main.m
<{1}}下的Compile Sources
未包含Build Phases
答案 65 :(得分:0)
当我收到此错误时,我想再分享一个原因:
我通过单击它改变了Project Navigator中的项目名称(在Xcode 6.1.1中),我的项目无法编译。我将项目名称改回旧名称,项目正在建设中。非常奇怪,但是我已经面对这个了。我希望这个信息帮助。
答案 66 :(得分:-1)
尝试清理项目,然后编译。
答案 67 :(得分:-1)
就我而言
我刚刚删除了armv7s和armv64并构建了它的作品。