苹果Mach-O链接器和同上错误 – Xcode 8

我刚刚更新我的Xcode到Xcode 8,现在正试图将我的项目的代码转换为Swift 2.3。 我能够使用Xcode 8build立几次而没有任何错误。 现在,出现了以下错误:

错误#1:苹果Mach-O链接器错误:链接器命令失败,退出代码1

ld:找不到文件:/Users/Linus/Library/Developer/Xcode/DerivedData/MyApp-asdjeshhsetnfxbegcsbcipdreneewgr/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/DownloadsViewController.o
铿锵声:错误:链接器命令失败,退出代码1(使用-v来查看调用)

我甚至不知道.o文件是什么。 虽然, DownloadsViewController的swift文件就在那里。

错误#2:同上错误:命令/ usr / cin / ditto失败,退出代码1

同上:无法得到源的实际path'/Users/Linus/Library/Developer/Xcode/DerivedData/MyApp-asdjeshhsetnfxbbciegrfdpdreneewgr/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/x86_64/ MyApp的-Swift.h”
命令/ usr / bin / ditto失败,退出代码1

同上错误发生3次:对于MyApp.swiftdocMyApp.swiftmoduleMyApp-Swift.h

提前致谢!

  1. 退出Xcode
  2. 重新启动系统
  3. selectXcode – >首选项。
    这将打开一个popup窗口。 select“地点”。 在地点,你会看到“派生数据”。 点击path旁边的箭头图标。
    这将打开一个包含“派生数据”的文件夹,将其删除。
  4. 清洁产品并运行

确保从.xcworkspace文件而不是.xcodeproj打开项目

步骤1 =点击导航菜单中的项目

第2步=select项目

第3步=build立设置

步骤4 =search启用位代码,如果位代码是是,则变为否

以前的答案都没有解决我的问题。 我认为它来自于cocoapods podFile的变化,从使用框架到不使用它们

目标>常规属性>链接框架中仍然会提示框架。 我删除了他们,我也从其他链接器标志删除框架和相应的框架(保存inheritance和objC标志)

希望可以帮助

UPDATE

Xcode神奇地决定修复错误本身。 我的项目再次运行,没有任何错误。
我没有做任何解决这个错误的事情。

在我运行时删除我的应用程序后,这发生在我身上。

我解决了它清理项目。

产品>清洁或Shift + Command + K

这是因为某些项目文件没有被编译。 在我的情况下,AppDelegate.swift不在编译器中。 所以我手动添加它,它的工作。

在这里输入图像说明

用下面的cmds清理XCode并重build:

 rm -rf ~/Library/Developer/Xcode/DerivedData/ killall Xcode 2> /dev/null killall Instruments 2> /dev/null killall 'iOS Simulator' 2> /dev/null killall Simulator 2> /dev/null killall 'Simulator (Watch)' 2> /dev/null killall ibtoold 2> /dev/null killall simctl 2> /dev/null # There may be others # Kill the service itself sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService rm -rf ~/Library/*/CoreSimulator 

对于我的原生应用程序,我在Project NavigatorTargets删除了一个testing项目的文件夹。 它解决了我的问题。

不要武装,只要去你的项目targat,然后build立设置和search启用位代码将其更改为YES到NO。

将位码转为“否”解决了这个问题。 这可以在Build Settings中find。

当我将Xcode从以前的版本7更改为新的XCode 8时,我遇到了同样的问题。在新的Xcode(8.3.3 now)中,编译器中有更多的设置。

当您将项目设置更新为新的Xcode时(使用编辑器 – >validation设置),将应用这些新设置并将其设置为默认值YES。 此更新之后,我有链接器错误!

在我的项目中,我使用Beyond compare(或类似)将文件.pbxproj的前一版本与新版本(设置validation后)进行了比较。

通过这种方式,我可以看到新版本Xcode中添加的新设置,并将新设置值设置为NO。 在这个更新之后,一切正常,链接器错误消失。

如果您通过构build阶段导入框架,请尝试将其放入项目的文件夹中,并将其添加到包含库的链接二进制文件中。 其实我之前就已经遇到过这个问题,我对这个错误非常沮丧,直到我知道我必须把.framework放到我的项目文件夹中。 希望会有所帮助

除了清理派生的数据和项目,并重新启动xcode,我发现重新将您的项目转换为当前的swift语法,并重新安装豆荚,如果你有他们也帮助。

要重新转换您的项目,您需要将swift_version构build设置恢复为yes,以便您的目标出现在转换列表中。

在将项目转换为当前Swift语法(Swift 3)后,我在XCode 8.2.1(Version 8C1002)中发现了这个问题。 我只是需要清理后重build,错误消失了。

如果清除程序和禁用位代码不起作用,那么错误的原因可能只是代码中更复杂的语法错误。

我得到了同样的问题,因为我已经定义了一个类(使用@interface),但没有提供一个实现(使用@implementation)。 这是一个简单的类,所以即使是一个空的实现解决了它。

也只是检查你是否在你的任何类中导入一个“* .m”实现文件,这可能会导致同样的问题。

删除导入语句可以解决问题

对我来说,这是一个反应本地触觉问题。 我认为这是因为CocoaPods的变化,也是因为文件位置的变化。 我刚刚删除它,并重新安装它。 希望这有助于某人。

UPDATE

运行时,构build成功,它只会崩溃。 为了解决这个问题,我使用了文件>添加文件到GoogleService-Info.plist项目,它的工作。

按照以下步骤操作:

步骤1:转到“构build阶段”选项卡,然后仅展开“链接库”

步骤2:然后转到常规选项卡,然后展开链接的框架和库(因为Yourprojectname.framework被禁用)