デバイスのコンパイル時にApple Mach-Oリンカーエラー


238

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

37
一体何ですか?同じエラーメッセージに対して非常に多くの異なる問題。よくやったアップル!
イリアンオノフレ2014年

17
「エラー:エラーが発生しました」の方が役に立ちます:))
Aviram Netanel

エラーの前にリンカーが吐き出す警告を見てください。より良い/より具体的なソリューションにつながる可能性があります。
プロQ

回答:


216

一般的なプロジェクトを上書きすると、この問題が発生する可能性があります。この方法を試してください。

-UPDATE-Clangエラー-Mach-Oリンカーエラー

場合によっては、それを修正するために.xctestエラーを表示するエラーログウィンドウ

->プロジェクトを選択

->この横([全般]タブの直前)のドロップダウンからプロジェクトテストファイルを選択します

-> 1つのオプションがあります(ProjNameTestsなど)

->ホストアプリケーションで、カスタムを表示する場合のみ、ドロップダウンからプロジェクトを選択します

できた!

ここに画像の説明を入力してください

古いメソッドが削除されました


4
フレームワークの検索パスを削除すると、ヘッダーファイルが見つからない
Danpe

62
理解できないと思います。私は何をすべきか…?
ファビアン2015年

1
@fabianスキップして別のソリューションを試してみてください:-)
Gajendra K Chauhan

4
私の日男を救った。私の上司の前に座って、私が取り組んでいるアプリを彼に見せなければなりません、そして私はこのリンカーエラーを得ました。ここに上陸していない場合、私は消えていた:D
Sarazを

2
最終ステップのホストアプリケーションはどこにありますか?
Kartiikeya 2018

195

同じ問題があり、実装ファイルに.hではなく.mファイルを誤ってインポートしてしまったという問題がありました。


1
エラーを見つけることは不可能です!あらゆるソリューションを試してみてください
AsifHabib 2014

これは真実ではありません。私は新しいプロジェクトで同じことを試みましたが、それでも同じエラーが発生します。
Hemang 2015年

[プロジェクトの設定とビルドフェーズ]セクションに移動し、[コンパイルソース]ではなく[バンドルリソースのコピー]セクションに.mファイルがないことを確認します。それは私のために働きました
LuAndre 2016

解決策を見つけることができません。私は何をしようとしているのかわからない...
マーカス

あなたは私の命を救いました。どうもありがとうございます!
Isaac

73

同じ問題が発生しました。

ソリューション(私にとって)=フレームワークを確認してください。

私の場合、「CoreData.framework」なしでCoreDataに関連するクラスを追加しました。それを追加することでMACH_Oの不満を解決しました。


6
また、最新のSDKリリースに存在しないライブラリを再度リンクしたときにも発生します。libz.1.2.3にリンクしていて、sdkに1.2.5が含まれているとします。フレームワークをチェックすることは本当に良い提案です!ダンテありがとう!
SlowTree 2012年

SlowTreeに感謝します。提案を保存すると、このリンカーのクラッシュに関する私の経験が解決されました。libz.1.2.3からlibz.1.2.5;
Tom Pace、2012年

2
Cocoapodsが2つのlibPods.aファイルをリンクしてくれました(そのため、シンボルが重複しています)。ありがとう、ダンテ!
Nick Merrill

はい。.aファイルを削除し、リンカーから再度追加しました。その働きました!
Balasubramanian

61

.xcodeprojではなく.xcworkspaceファイルを開きます。.xcworkspaceファイルを繰り返し開きます。エラーはすべて解消されます。


1
うわー、それは最も異常なデバッグメッセージの1つでなければなりません。これが、提供されたメッセージに基づく理由であると文字どおり推測したことはありません。
ジョセフケーシー

1
.xcodeprojに含まれていない外部ライブラリがあったため、私にとってはトリックでした。ココアポッドと関係があった
Sjoerd de Wit

これでうまくいきました。@SjoerddeWitが言ったように-cocoapodsを含めるには、.xcodeprojではなく.xcworkspaceを開く必要があります。
コーディリッチモンド

私の日を救った!+1
ブルーノモンテイロ2019

Unityプロジェクトをxcodeにエクスポートしましたが、.xcworkspaceファイルがありません
Ayush Malviya

36

Re:タイトルで概説されている問題:

他の誰かが明白なものを逃した場合に備えて...

Xcode4の新しいバージョンをインストールし、既存のファイルを新しいプロジェクトにドラッグした後、このエラーに遭遇しました。[ファイルを追加するためのオプションを選択してください]ダイアログで[ターゲットに追加]チェックボックスがオフになっていることを確認できませんでした。[ターゲット]> [ビルドフェーズ]> [ソースのコンパイル]の省略を修正すると、問題が解決しました。


このトリックは私のために働いた。ありがとう。すべてのコンパイルディレクトリを削除し、プロジェクトを再ビルドしました。
Vivek Gyaneshwar 2017年

34

メニュー>製品>クリーン、これが機能する理由です。他のみんなについてはわかりません。表示する写真を追加しました。

ここに画像の説明を入力してください


1
驚くばかり。私が見つけることができる最も簡単な解決策。
Vincent van Leeuwen

29

奇妙なエラー。私にとっては、Xcodeをクリーンアップして再起動したところ、問題は解消しました。



24

これらの答えのどれも私を助けませんでした。次に、Cocoapodsを再インストールしてみました。

pod deintegrate

pod install

問題が解決しました!


ポッドとxcodeとの接続がどこにあるのかはわかりませんが、ポッドファイルが派生データフォルダーに確実に到達するようにするのはしばしば困難です。これで問題が解決したようです。私はちょうどこの答えを開始することがしたい...
Jacksonkr

20

問題は、XCode 4では、依存関係がメインプロジェクトのアーキテクチャ設定を想定していないことでした。以前のXCode 3ではそうでしたが、すべての依存関係を正しいアーキテクチャに設定する必要がありました。


2
ありがとうございました!リンカーからのエラーメッセージが「ファイルが見つかりませんが、それを使用できません...」ではなく、「ファイルが見つかりません」について不平を言うという事実に惑わされ、ライブラリ検索を探しているxcode設定をさまようパス。しかし、これでうまくいきました。そして、あなたがこの問題を抱えているなら、この他の投稿も関連しています:stackoverflow.com/questions/2999844/three20-and-ios-4。また、この素晴らしい要約ブログ:amirnaor.com/?p
Rob

13

私も同じことをして、なんとか解決しました。

xcode 設定で、場所タブはビルド場所の下の値を "に変更しますPlace build products in locations specified by targets"


ウォルフェルトに感謝します。試してみましたが、1250のApple Mach-Oリンカー警告があり、進行していません。これを修正するために他に何かしましたか?乾杯

ウォルファート、ありがとう!あなたは私の多くの時間を節約しました。
Sunil Targe

6
オプションはXCode 5.1では利用できません
Hemang

13

私はこれにしばらく苦労しましたが、私の場合、FRAMEWORK_SEARCH_PATHSという検索パスの下のビルド設定になりました。プロジェクト、ターゲット、および「解決済み」設定を比較しているように見える「レベル」ボタンを選択するのに役立ちました。ターゲット設定がデフォルトの "$(inherited)"を何らかの形で上書きしていることがわかりました。オーバーライドされた値は、XCodeが設定を "解決"したものでした。オーバーライド(この場合は3.2 sdkを指定)を削除すると、リンカーエラーはなくなりました。4.0以降のメソッドを呼び出したクラスに関する警告が最近表示されました。

それらの警告について-最近の変更のためにMessageUIフレームワークを追加する前に、私はそれらを見たことはありませんでした。私はそのフレームワークを追加したときに、XCodeがそのオーバーライドをターゲットに追加して巧妙なことを試みたのではないかと思いますが、確かではありません。私はどの時点でも明示的にそれをしませんでした。たとえば、警告はsdk 4.0まで表示されなかったNSURLのURLByAppendingPathComponentメソッドに関するものでした。MessageUIフレームワークを追加する前は、その警告を受けたことはありませんでした。オーバーライドを削除したため、取得できなくなりました。


11

私はこの問題があり、インポートすることでQuartzCore修正しました。


8

CordovaLib.xcodeproj-> Build Settingsで「Build Active Architectures Only」をYesに変更すると、うまくいきました。以前は、アプリはシミュレータで実行されていましたが、デバイスでは実行されていませんでした。


7

ビルド設定を更新する必要がある場合があります。

XCode 4の古いSDKがない可能性があるため、iOSターゲットバージョンとプロセッサアーキテクチャを確認します。

ビルド設定に«Missing SDK»が表示される場合があります。該当するものに変更します。


これは、xcodeをアップグレードするときに常に最初に行うことです。今回は問題ありません。
CodeVomit 2011年

7

私は同じ問題を抱えていました:.hがプロジェクトにある間に.mファイルを誤って削除してしまいました。.mファイルを復元すると、問題は解消しました。


6

特定のフレームワーク検索パスが指定されていないことを確認してください。ターゲットの情報に移動して、フレームワーク検索パスのエントリを削除するだけの場合、指定したデプロイメントバージョンのデフォルトを使用する必要があります。


5

私はcategory classファイルを作成しようとするだけで、この奇妙な問題が発生しました。

問題の原因となるカテゴリクラスを作成する間違った方法:

New File- > Cocoa Touch- > Objective-C class、私はへのファイルの名前を変更のようなカテゴリークラス(すなわち..名OriginalClass_CategoryName.h/mOriginalClass+CategoryName.h/m、また、ファイルの内容を修正しました)。

ここで正しい方法:

New File-> Cocoa Touch-> Objective-C category、それはファイルを自動生成します(OriginalClass+CategoryName.h/m)。

ああ、なんてバカなんだ!


5

CoreDataを使用していて、XCodeを使用してエンティティのNSManagedObjectサブクラスを生成する場合は、エンティティごとに1つだけ生成するようにしてください。

私の問題は、同じエンティティに対して複数のNSManagedObjectサブクラスを生成した(そしてそれらを異なるフォルダーに配置した)ことでした。

それらをすべて削除して、NSManagedObjectサブクラスを再生成しました。


5

この問題を修正した奇妙なもののリストに追加するには...

私はいくつかのconst CGFloat変数をグローバルヘッダーファイルに持っていました

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

私がこれらを削除した瞬間、すべて大丈夫でした:)


1
私のWEIRDの問題は、定数をNSStringとして宣言した.pchまたはconstants.hファイルにありました* const kInitiaNotification = @ "kInitialNotification"; 最初は「静的」に言及せず
Mazen Kasser

に変更した直後に問題が発生しNSString static *key = @"someKey"ましたconst NSString *key = @"someKey"
TonyTony

5

異なるクラスに2つの同じ定数があったからといって、まったく同じ問題がありました。.hファイルではなく.mファイルをインポートした場合にも、この問題が発生する可能性があります。


あなたは私の日を救います!!
teck wei

@teckwei上矢印を押すことができます:D
Adela Toderici 2017


4

同じ問題があり、解決しました。私の場合、「アーキテクチャ」設定が問題の原因でした。プロジェクトファイルの[ビルド設定]タブで、アーキテクチャがarmv6に設定されています。私はそれをStandard(armv7)に変更し、クリーンにしてビルドしました。その後、うまくいきました!


4

私の場合、問題は異なるターゲットで異なるアーキテクチャが指定されていることでした。私は、armv6、armv7、およびcocos2dを使用してアプリケーションターゲットを標準(amrv7)でビルドしていました。ビルド設定に入り、アーキテクチャがすべてのターゲットに同意することを確認します。


4

私もこの問題を奇妙に解決しました!

Target > Build Phases > Link Binary to librariesに移動します

すべてのフレームワークを削除して、もう一度追加してください!

それがあなたのために働くことを願っています!


かなりひどいソリューション
SleepsOnNewspapers 2015

答えることはできません...あまり論理的ではありません
LKM

エラーメッセージを確認したところ、フレームワークの1つであることがわかりました。そのため、すべてのフレームワークではなく、そのフレームワークを削除して、もう一度追加しました。
Oluwatobi Omotayo 2017

4

Swift言語の場合...

「ld:file too small(length = 0)....」というエラーが表示されます

私の場合、プロジェクトをクリーンアップしてから再ビルドします。

手順:-

1)goto Project-> Clean

2)goto Project-> Build

お役に立てれば..


私のために働いた。デバイスをiPhone 6からiPhone 4Sに切り替えると発生しました。
racl101 2015

私も働いた。どうもありがとうございました
リー

4

これは私にとってトリックでした:

に行く

1)製品> クリーン

2)ウィンドウ> プロジェクト

3)プロジェクトを選択し、「削除派生データをクリックします

4)製品> ビルド


3

1つの可能性:Xcode 4ビルド設定で「Dead code stripping」をオンにします。

別の可能性:以前にGCCを使用していたいくつかのフレームワークでLLVMの使用に切り替えた可能性があります。GCC(またはLLVM GCC)に戻ると、これらの警告が表示されなくなる可能性があります。


3

別のファイルにある既存の定数と同じ名前の新しい定数を誤って定義したため、xCode 4.3.1を使用してこのエラーが発生しました。xCodeは文句を言わなかったが、コンパイラーはそれを好まなかった。


3

「ライブラリ検索パス」を編集してこのエラーを修正できました

いくつかのフォルダーを移動したため、最初に表示されましたが、ライブラリ/フレームワークをリンクするとビルド設定に自動的に追加されるため、ビルド設定に2つの異なる検索パスが与えられましたが、そうではありません。常に削除されます。

したがって、リンクされたライブラリ/フレームワークを別のディレクトリに移動して再リンクする場合、検索パスを手動で編集する必要があります。

移動する前にライブラリ/フレームワークを削除することでこれを回避できるかもしれませんが、私はテストしていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.