在为设备编译时,Apple Mach-O连接器错误

我刚刚升级到xcode 4.0,我不能再部署到iPhone,我得到一个苹果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
620774 次浏览

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

验证iOS目标版本和处理器架构,因为你可能没有XCode 4的旧sdk。

您可能会在构建设置中看到«Missing SDK»。把它改成任何适用的东西。

我也遇到过同样的问题,并设法解决了它。

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

我也遇到了同样的问题。

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

在我的例子中,我添加了与CoreData相关的类,没有“CoreData.framework”。添加它解决了MACH_O的抱怨。

不确定是否相关,但看到你正在运行一些三个20库,你可能想要查看他们网站上的这篇文章:http://three20.info/article/2011-03-10-Xcode4-Support

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

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

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

我也遇到了同样的问题,问题是我不小心在实现文件中导入了。m文件而不是。h文件-希望它有帮助

我有同样的问题:只是不小心删除了一个.m文件,而.h在项目中。 当我恢复.m文件时,问题消失了

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

我有这个问题,导入QuartzCore修复了它。

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

关于这些警告——在为最近的更改添加MessageUI框架之前,我从未见过它们。我怀疑,但不确定,当我添加这个框架时,XCode试图做一些聪明的事情,把这个覆盖添加到我的目标。我在任何时候都没有明确地做过。例如,这些警告是关于NSURL的URLByAppendingPathComponent方法的,该方法直到sdk 4.0才出现。在添加MessageUI框架之前,我从未收到过这样的警告。自从我移除了超驰装置,我就再也拿不到它们了。

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

我也有同样的问题,但我解决了。 在我的案例中,“架构”设置导致了这个问题。 在我的项目文件中,Build Settings选项卡,Architectures被设置为armv6。我把它改为标准(armv7),做清洁和构建。然后它成功了!< / p >

这是永久的解决办法。一般来说,覆盖项目可能会导致这个问题。试试这个方法。

- update -叮当错误- Mach-O连接器错误

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

->选择您的项目

在这旁边(就在General选项卡之前)从下拉菜单中选择你的projectTest文件

有一个选项(像ProjNameTests)

->在“主机应用程序”中,仅当项目显示自定义时,才从下拉菜单中选择项目

完成了!

enter image description here

旧方法被删除

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

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

New FileCocoa TouchObjective-C class,然后我修改文件的名称为类类名称..(即OriginalClass_CategoryName.h/mOriginalClass+CategoryName.h/m,并且还修改了文件中的内容)。

就在这里:

New FileCocoa TouchObjective-C category,它会自动生成文件(OriginalClass+CategoryName.h/m)。

哦,我真笨!!

在我的案例中,问题是在不同的目标下指定不同的体系结构。我用armv6, armv7和cocos2d标准(amrv7)构建我的应用程序目标。进入构建设置,确保您的架构与所有目标一致。

如果你使用CoreData,并且你使用XCode为你的实体生成NSManagedObject子类,确保你只为每个实体生成一个。

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

我只是删除了所有它们,并重新生成NSManagedObject子类。

在解决这个问题的奇怪的东西列表中添加…

我在一个全局头文件中有一些const CGFloat变量

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

当我移除这些的时候,一切都很好:)

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

我可以通过编辑“库搜索路径”来修复这个错误。

它首先出现是因为我移动了几个文件夹,最终给了我的构建设置两个不同的搜索路径,因为当你链接一个库/框架时,它们会自动添加到你的构建设置中,但它们并不总是被删除。

因此,如果你将一个链接的库/框架移动到不同的目录并重新链接它,你将不得不手动编辑搜索路径。

你可以通过在移动之前删除库/框架来避免这种情况,但我还没有对此进行测试。

我通过在构建设置的链接部分将Mach-O类型从Nothing更改为Executable。

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

以防其他人忽略了显而易见的…

在安装新版本的Xcode4并将现有文件拖到新项目中之后,我遇到了这个错误。我没有发现“添加到目标”复选框在“选择添加文件的选项:”对话框中未选中。纠正我的遗漏在目标>构建阶段>编译源解决了问题。

如果你得到一个Mach-O链接器警告或错误说“目录没有找到选项”,查找该目录的路径。如果没有,请尝试下载最新版本的RestKit,然后手动将文件夹放入。

我在导入框架后遇到了这个问题。在“Build Phases”下面,框架的名称用红色突出显示。我再次添加框架,问题就解决了。

在CordovaLib中将“Build Active Architectures Only”更改为“Yes”。xcodeproj ->构建设置为我做的伎俩。早些时候,应用程序是在模拟器上运行,但不是在设备上。

尝试清理项目,然后编译。

对我来说,在XCode 4.5.x的设备上运行时出现了架构故障。

XCode 4.5不再支持armv6,所以我的解决方案是:

我刚刚编辑了所有库中的所有目标(three20Core, three20Common等)和libThree20:在构建设置中,只选择了“架构”和“有效架构”中的armv7和armv7s

在我的情况下,我复制了一个类文件!通过使用Xcode右侧栏的底部搜索字段找到它,因此要解决它,请删除其中一个引用

我的修复我同样的问题:添加“其他链接器标志”在“项目”,而不是在“目标”。 因此,我将它移动到“Targets”,它不应该在“Project”中

我不小心添加了UITableViewController的同一个子类的两个副本。删除其中一组文件可以清除错误。

按照以下步骤来解决这个问题:

进入项目设置和构建选项卡。搜索"其他链接器标志" .

双击Release和Change的链接器标志:

 ${TARGET_BUILD_DIR}/libCordova.a to ${BUILT_PRODUCTS_DIR}/libCordova.a

调试 干净的< / em >构建< em > < / em >再次存档。

对我来说,这是不小心导入了一个实现。”M”文件,而不是相应的头文件“。h”文件。当我发现项目构建恢复正常时。

当我在xcode 4.6中导出FMDB模块时,我得到了相同的问题。 后来我发现了一个fmdb。M在我的文件列表中,这导致了这个问题。 在我从项目中删除后,它可以正常工作

我无意中试图编译64位模拟器,这与我的CocoaPods不一致

在我的情况下,我只是移动。h .m文件从一个文件夹到另一个文件夹,该文件夹不存在的背后。所以我先在finder上创建文件夹,然后在finder上移动文件,然后添加该文件夹,并从项目中删除移动文件到其他文件夹的引用,它停止给我错误

一分钟前我也遇到了同样的问题。把我引到这里,但没什么用。但我找到了问题所在并解决了它。问题是在我的头文件中,我已经声明了一个名为trig_node[SIZE]的struct类的实例。

我的头…

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;
}

这是什么导致我的链接错误。 因此,为了解决这个问题,我将三角表类“trig_node[SIZE]”的实例放在了.cpp文件中,该文件清除了错误。所以现在新的修复看起来像这样

我的头…

struct TrigNode
{
float msin;
float mcos;
float mtan;
};

my .cpp文件 trig_node(大小)< / p >

float cos_table_(float deg)
{
uint n = ((SIZE/DEGRE)*deg);
return trig_node[n % DEGRE].mcos;
}

如果您导入了同一个库的两个不同版本,也会出现这种错误,在这种情况下,只需删除旧版本,只保留一个版本,Magic就可以为您工作。

如果你使用XCode创建了一个自定义NSManagedObject类,然后添加到它,并为自定义类生成一个新文件,有时XCode不会覆盖你的旧类,你将被困在两个相同的文件,但在不同的目录。找到旧文件并删除它。

但问题可能出在其他方面。

你可以尝试Unity-Build Settings-Player Settings-SDK Version: 设备SDK而不是模拟器sdk吗

我犯了这样的错误,这就改正了

我正在运行xcode 5。在我的情况下,我必须改变我的“部署目标”。它之前设置为3.0,我将其更改为7.0。现在错误消息消失了。要改变你的“部署目标”, 遵循以下步骤:

  • 去你的“项目名称”(左上)
  • 转到你的“目标”(屏幕中间)
  • “一般”
  • “部署信息”
  • “部署目标”

修改为当前iOS版本。 -谢谢。< / p >

我遇到这个问题是为了弄清楚我的XCODE项目中有两个引用。只需删除另一个引用。希望这能有所帮助

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

目标 >构建阶段 > 用库链接二进制:

删除所有框架并重新添加它们!

希望它对你有用!

我有同样的问题,当我拖一些文件。h和。m到我的项目和Xcode开始显示我这个错误Clang:错误:连接器命令失败,退出码为1(使用-v查看调用)运行时。

后来我发现我已经有了。h &.m在我的Xcode项目的其他子文件夹下。所以我删除了额外的。h和。m,清洁我的项目和它的工作现在。

这个错误有很多原因,这就是为什么这个问题有这么多答案。你只需要看看&检查;你是什么情况。

我认为最好的反应是查看文件导入,一些导入有问题。

< p >的例子: 包含#import file.m 或 包含外部file.h

...

我的具体错误是:

ld: entry point (_main) undefined. for architecture armv7

这应该是显而易见的,但这是因为main.m没有包含在Build Phases下的Compile Sources

当我得到这个错误时,我想分享另一个原因:

我在project Navigator(在Xcode 6.1.1中)中更改了项目名称,只需单击它,我的项目就无法编译。我把项目名称改回原来的名字,项目正在建设。非常非常奇怪,但我确实遇到过这种情况。我希望这些信息能有所帮助。

对于Swift语言…

我得到这个错误“ld:文件太小(长度=0)....”

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

步骤:

1)去项目->清洁

2)去项目->构建

希望这能有所帮助。

菜单>产品>清洁,这是什么使它工作。其他人的情况我就不确定了。我添加了图片显示。

enter image description here

代码Signinig ! !

我也有这个问题- "链接器命令失败,退出代码为1(使用-v查看调用)"< / em >

我的问题是我试图在一个真实的设备上运行应用程序,我忘记在建立设置选项卡中配置< em >代码签名< / em >部分。

我遇到了同样的问题只是因为我在不同的类中有两个相同的常数。如果你导入的是。m文件而不是。h文件,你也会遇到这个问题

我只是需要用main()方法来文件,Xcode对此并不满意。

如果你使用Xcode 7或更高版本,只需做一个产品->清洁。这对我很管用。

我的问题是在多节课上。我已经创建了一个名为TAG的NSString,我已经设置了TAG的值为每个类的字符串名称(例如:NSString * TAG = HWGuiControl)。我这样做了,然后它很容易预先我的NSLog语句与类的名称。(我在Android上使用过这个系统,非常成功,非常适合分析2年后的程序流程)。部署到设备上,这一切都很好。但是当它的时候创建一个存档分发,显然链接器不能与NSString命名TAG出现在多个文件。将TAG的名称修改为HWGTAG等,就可以达到目的。

对我来说

我只是删除了armv7s和armv64,并建立了它的作品。

这对我来说很有用:

1)产品> 清洁

2) Windows > 项目

3)选择你的项目,点击“删除导出数据

4) > 构建产品

修复:构建设置>启用位码> No enter image description here

在我自己的例子中,我对一些键有重复的声明。我使用extern关键字声明了一些NSString常量,并在两个不同的类文件中做了完全相同的事情。当我删除其中一个时,错误消失了。

extern NSString *const CFDataStatusKey;
extern NSString *const CFDataErrorKey;
extern NSString *const CFDataReasonKey;
extern NSString *const CFDataChannelsKey;

它们分别在两个类的.h和.m文件中声明和初始化。删除副本解决了这个问题。希望这能有所帮助

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

对我来说,问题是我加载了相同的函数两次。从建立设置 > 链接 > 其他链接标志中删除-ObjC

在我的例子中,这种Apple Mach-O连接器错误的原因是源代码文件(.m)包含到资源包目标。

验证最近创建的.m文件不包含在包中:在项目导航器中选择该文件,打开文件检查器,并确保在Target Membership部分中取消了资源包复选框。

我必须确保我的框架是用模拟器构建的,以便用模拟器构建我的项目(我的项目当然是使用框架)。在我的iPhone上也一样,所有东西都必须同步,不知道为什么,但它解决了这个问题。

我希望这能帮助到一些人。

如果你用相同的名字定义了NSObject:

NSObject *notUniqueObj;

即使在2个不同的文件中(如果您在另一个文件中导入一个文件),它也会给您一个错误。给它们起不同的名字。

我的问题是因为我没有在我的一个头文件中将变量定义为extern,它在.c文件中被重新声明。

这些答案都帮不了我。然后我尝试重新安装Cocoapods:

pod deintegrate


pod install

问题解决了!

在我的情况下,我有包括.m文件,这就是为什么编译器显示这种类型的错误。

你应该检查最近导入的文件不是。m文件“某个时候i”

这个问题的解决方法很简单 只需转到项目安装的目录并打开文件 扩展名为".xcworkspace"

这样问题就解决了。

使用CocoaPod,首先安装,然后打开工作空间,而不是CocoaPod网站中指定的项目。

$ pod install


$ open YOUR_PROJECT_NAME.xcworkspace

请转到您的工作空间设置并进行以下更改:

Workspace Setting:
Build System:
Legacy BuilPer-User




Per-User Workspace
DerivedData:
Workspace relative location






Build System
Use User Setting

对于我们的Flutter项目,我们最近更改了包标识符,它在Info.plist中没有正确更新。因此,产生了这个问题。

我们必须用给定的值在Info.plist中添加/更新以下键:

  • BUNDLE_ID
  • CFBundleDisplayName
  • CFBundleName
  • <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    
  • <key>CFBundlePackageType</key>
    <string>APPL</string>
    
  • <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleExecutable</key>
    <string>${EXECUTABLE_NAME}</string>
    
  • <key>CFBundleShortVersionString</key>
    <string>$(MARKETING_VERSION)</string>
    <key>CFBundleVersion</key>
    <string>$(CURRENT_PROJECT_VERSION)</string>
    

另外,请确保你的project.pbxproj文件也包含以下静态值:

MARKETING_VERSION = 1.0;
CURRENT_PROJECT_VERSION = 1;

如果这些信息没有正确链接,那么它将继续显示此错误。