Xcode 4.0にアップグレードしたばかりで、iPhoneにデプロイできなくなりました。AppleMach-O Linker Errorが発生しますが、それでもシミュレータでは機能します。
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
問題は、XCode 4では、以前はXCode 3で行っていたように、依存関係がメインプロジェクトのアーキテクチャー設定を引き継がないことです。私はすべての依存関係を正しくアーキテクチャーに設定する必要がありました。
これは恒久的な解決策です。一般的にプロジェクトを上書きすると、この問題が発生することがあります。この方法を試してください。
-UPDATE - Clangエラー - Mach-Oリンカエラー
場合によっては、エラーログウィンドウに.xctestエラーが表示され、修正することができます。
- >あなたのプロジェクトを選択してください
- >(一般タブの直前にある)この横にあるドロップダウンからあなたのprojectTestファイルを選択してください
- > 1つの選択肢があります(ProjNameTestsのように)
- >ホストアプリケーションで、カスタムが表示されている場合にのみドロップダウンからプロジェクトを選択します。
完了しました。
古いメソッドが削除されました
私は同じ問題を抱えており、問題は私が誤って.hの代わりに.mファイルを実装ファイルにインポートしたということでした。
同じ問題にぶつかっただけです。
解決策(私にとっては)=あなたのフレームワークを確認してください。
私の場合は、 "CoreData.framework"なしでCoreDataに関連するクラスを追加しました。それを追加することはMACH_Oの不満を解決しました。
開いている.xcworkspaceファイルではなく.xcodeproj。開いている.xcworkspaceファイルを繰り返します。あなたのすべてのエラーは消えます。
タイトル:で概説したように問題:
万が一他の誰かが明らかに見逃した場合.
私はXcode4の新しいバージョンをインストールして新しいプロジェクトに既存のファイルをドラッグした後にこのエラーに遭遇しました。 [ファイルを追加するためのオプションを選択してください]ダイアログの[ターゲットに追加]チェックボックスがオフになっていることを確認できませんでした。 「ターゲット」>「ビルド・フェーズ」>「ソースのコンパイル」の私の省略を修正して問題を解決しました。
Menu> Product> Clean、これが機能した理由です。私は他のみんなについてよくわからない。写真を追加しました。
奇妙なエラーです。私にとっては、Xcodeをクリーンアップして再起動するだけで問題は解決しました。
修正:[ビルド設定]> [ビットコードを有効にする]> [いいえ ]
これらの答えのどれも私を助けませんでした。それから私はCocoapodsを再インストールしようとしました:
pod deintegrate
pod install
問題が解決しました!
私は同じことをしてそれを解決することができました。
Xcode 設定では、location tabは build location の下の値を "Place build products in locations specified by targets"
"に変更します。
私はしばらくこれに苦労しましたが、私の場合はFRAMEWORK_SEARCH_PATHSという検索パスの下のビルド設定になりました。それは私が私のプロジェクト、目標と「解決された」設定を比較するように思われた「レベル」ボタンを選択するのを助けました。私の目標設定がどういうわけかデフォルトの "$(inherited)"をオーバーライドしていることを私は見ました、そしてオーバーライドされた値はXCodeが設定を "解決"したものでした。この場合3.2 sdkを指定してオーバーライドを削除したとき、リンカエラーが消えました。これは、4.0以降のメソッドを呼び出したクラスに関する最近の警告の一部と同様です。
これらの警告について - 最近の変更のためにMessageUIフレームワークを追加するまで、私はそれらを見たことがありません。そのフレームワークを追加したときに、XCodeがそのオーバーライドをターゲットに追加することによって何か賢いことをしようとしたことは疑いようですが、確かにはわかりません。明示的にはしませんでした。警告は、例えばNSURLのURLByAppendingPathComponentメソッドに関するもので、sdk 4.0までは現れませんでした。 MessageUIフレームワークを追加する前に、私はその警告を受けたことはありませんでした。そして、私はオーバーライドを削除したので、私はもうそれらを手に入れません。
私はこの問題を抱えていて、QuartzCore
をインポートすることでそれを修正しました。
CordovaLib.xcodeproj - > Build Settingsで[Build Active Architectures Only]をYesに変更すると、うまくいきませんでした。以前のアプリはシミュレータ上で実行されていましたが、デバイス上では実行されていませんでした。
私は同じ問題を抱えていました。プロジェクトに.hがある間に、誤って.mファイルを削除しただけです。 .mファイルを復元すると問題は解決しました。
ビルド設定を更新する必要があるかもしれません。
XCode 4を搭載した古いSDKがない可能性があるため、iOSのターゲットバージョンとプロセッサアーキテクチャを確認してください。
ビルド設定に«Missing SDK»と表示されることがあります。該当するものに変更してください。
特定のフレームワーク検索パスが指定されていないことを確認してください。ターゲットの情報に移動してフレームワーク検索パスのエントリを削除すると、指定したデプロイメントバージョンのデフォルトが使用されるはずです。
CoreDataを使用していて、エンティティに対してNSManagedObjectサブクラスを生成するためにXCodeを使用する場合は、必ず各エンティティに対して1つだけ生成するようにしてください。
私の問題は、それが同じエンティティに対して複数のNSManagedObjectサブクラスを生成した(そしてそれらを異なるフォルダに置いた)ということでした。
それらすべてを削除して、NSManagedObjectサブクラスを再生成しました。
category class
ファイルを作成しようとしたところ、この奇妙な問題が発生しました。
問題を引き起こすカテゴリクラスを作成するWrong方法:
New File
- > Cocoa Touch
- > Objective-C class
、それから私はファイルの名前をCategory Class like name ..に変更しました(すなわちOriginalClass_CategoryName.h/m
をOriginalClass+CategoryName.h/m
に、そしてまたファイルの内容も変更しました)。
New File
- > Cocoa Touch
- > Objective-C category
と、ファイルを自動生成します(OriginalClass+CategoryName.h/m
)。
ああ、なんてバカなんだ!
異なるクラスに2つの同じ定数があるという理由だけで、まったく同じ問題がありました。 .hファイルではなく.mファイルをインポートした場合もこの問題が発生する可能性があります。
この問題を修正した奇妙なもののリストに追加するには...
グローバルヘッダファイルにconst CGFloat変数がいくつかありました。
const NSInteger globalInteger1 = 2;
const NSInteger globalInteger2 = 3;
これらを削除した瞬間、すべて問題なかった:)
私は同じ問題を抱えていて、それを解決しました。私の場合は、「アーキテクチャ」の設定が問題を引き起こしていました。私のプロジェクトファイルの[Build Settings]タブで、[Architectures]は[armv6]に設定されていました。私はそれをStandard(armv7)に変更し、きれいにしてビルドします。それはうまくいった!
私の場合、問題は異なるターゲットの下で異なるアーキテクチャが指定されていることでした。私は、標準(amrv7)を使用してarmv6、armv7、およびcocos2dを使用してアプリケーションターゲットを構築していました。ビルド設定に入り、あなたのアーキテクチャがすべてのターゲットに対して一致することを確認してください。
それが関連しているかどうかわからないが、あなたがいくつかの320の図書館を運営しているのを見て、あなたは彼らのウェブサイトでこの記事をチェックしたいかもしれません: http://three20.info/article/2011-03-10-Xcode4-Support
これは私にとってトリックでした:
に行く
1)製品> クリーン
2)Windows> プロジェクト
3)プロジェクトを選択して「 削除 」 派生データ をクリックします。
4)製品> ビルド
私はこの問題をあまりにも奇妙に解決しました!
ターゲット >ビルド フェーズ > バイナリとライブラリのリンク :に移動します。
フレームワークをすべて削除して、もう一度追加してください。
それがあなたのために働くことを願っています!
Swift言語の場合.
「ld:ファイルが小さすぎます(長さ= 0)....」というエラーが表示されます。
私の場合は、プロジェクトをきれいにしてから再構築します。
ステップ: -
1)後藤プロジェクト - >クリーン
2)gotoプロジェクト - >ビルド
お役に立てれば..
次のように同じ名前でNSObjectを定義したとします。
NSObject *notUniqueObj;
2つの異なるファイル(別のファイルをインポートしている場合)でも、エラーが発生します。それらに別の名前を付けます。
"Library Search Paths"を編集してこのエラーを修正することができました
私はいくつかのフォルダを移動したために最初の部分でトリミングされ、ライブラリ/フレームワークをリンクすると自動的にビルド設定に追加されるため、ビルド設定に2つの異なる検索パスが与えられました常に削除されました。
そのため、リンクされたライブラリ/フレームワークを別のディレクトリに移動して再リンクする場合は、手動で検索パスを編集する必要があります。
あなたはそれを動かす前にライブラリ/フレームワークを取り除くことによってこれをかわすことができるかもしれません、しかし私はそれをテストしていません。
コードの意味
私もこの問題を抱えていた - "リンカコマンドが終了コード1で失敗した(呼び出しを見るには-vを使う)"
私の問題は私が実際のデバイスでアプリを実行しようとした、そして私は コード署名 セクションを ビルド設定 タブで設定するのを忘れていました。
異なるファイルの既存の定数と同じ名前の新しい定数を誤って定義したため、xCode 4.3.1を使用しているとこのエラーが発生しました。 xCodeは文句を言わなかったが、コンパイラはそれを好まない。
私にとっては、対応するヘッダーの「.h」ファイルではなく、実装の「.m」ファイルを誤ってインポートしていました。プロジェクトのビルドが通常の状態に戻ったことを知りました。
私にとって問題は、同じ関数を2回ロードしたことでした。 ビルド設定 > リンキング > その他のリンカフラグ から-ObjC
を削除します。
1つの可能性:Xcode 4ビルド設定で「デッドコードストリッピング」をオンにします。
他の可能性:以前GCCを使用していたいくつかのフレームワークでLLVMを使用するように切り替えた可能性があります。 GCC(またはLLVM GCC)に戻ると、これらの警告が取り除かれることがあります。
誤って64ビットシミュレータ用にコンパイルしようとしましたが、CocoaPodと一致しませんでした
私にとっては、XCode 4.5.xのデバイスで実行しているときにアーキテクチャの問題がありました。
XCode 4.5はこれ以上armv6をサポートしていないので、私の修正は次のとおりです。
すべてのライブラリ(three20Core、three20Commonなど)およびlibThree20のすべてのターゲットを編集したところです。ビルド設定では、「Architectures」および「Valid Architectures」のarmv7とarmv7sのみを選択しました。
私の場合は、クラスファイルを複製しました。 Xcodeの右側のバーにある一番下の検索フィールドを使って見つけたので、解決するためにそれらのうちの1つの参照を削除してください。
私の同じ問題に対する私の修正は、 "Targets"ではなく "Project"に "other linker flags"を追加することです。だから、私はそれを "Targets"に移動しました、それは "Project"にあってはいけません。
この問題の解決策は非常に簡単ですプロジェクトがインストールされているディレクトリに行き、拡張子 ".xcworkspace"を持つファイルを開くだけです。
これで問題は解決します。
私はxcode 5
を実行しています。私の場合は "Deployment Target" を変更します。以前は3.0に設定されていましたが、7.0に変更しました。エラーメッセージは消えました。 "Deployment Target" を変更するには、次の手順に従います。
現在のiOSのバージョンに変更してください。 - ありがとうございます。
Mach-O Linkerの警告またはエラーが発生した場合は、「ディレクトリがオプションに見つかりません」と表示されている場合は、そのディレクトリのパスを調べます。見つからない場合は、最新バージョンのRestKitをダウンロードして手動でフォルダを作成してください。
UITableViewControllerの同じサブクラスの2つのコピーを誤って追加しました。ファイルセットの1つを削除するとエラーが解決しました。
私の問題は、ヘッダーファイルの1つに変数をexternとして定義していなかったため、.cファイルに再宣言されたためです。
XCodeを使用してカスタムNSManagedObjectクラスを作成し、それに追加してカスタムクラス用の新しいファイルを生成した場合、XCodeによって古いクラスが上書きされず、2つの同じファイルが異なるディレクトリに保存されることがあります。古いファイルを見つけて削除します。
問題は他の何かかもしれません。
私の場合、そのようなApple Mach-O Linkerエラーの原因はリソースバンドルターゲットへのソースコードファイル(.m)インクルードでした。
最近作成した.mファイルがバンドルに含まれていないことを確認します。プロジェクトナビゲータでファイルを選択し、ファイルインスペクタを開き、Target Membership
セクションでリソースバンドルのチェックボックスがオフになっていることを確認します。
私の場合は、いくつかのキーの宣言が重複していました。私はexternキーワードを使用していくつかのNSString定数を宣言し、2つの異なるクラスファイルでまったく同じことをしました。それらの1つを削除すると、エラーは消えました。
extern NSString *const CFDataStatusKey;
extern NSString *const CFDataErrorKey;
extern NSString *const CFDataReasonKey;
extern NSString *const CFDataChannelsKey;
これらは、2つのクラスの.hファイルと.mファイルでそれぞれ宣言および初期化されています。重複を削除すると問題が解決しました。これが役立つことを願っています
CocoaPodでは、最初に CocoaPod Webサイト で指定されているように、プロジェクトの代わりにワークスペースをインストールして開きます。
$ pod install
$ open YOUR_PROJECT_NAME.xcworkspace
私は単にmain()
メソッドでファイルを作成する必要があり、Xcodeはそれに満足していませんでした。
このエラーは、同じライブラリの2つの異なるバージョンをインポートした場合にも発生する可能性があります。この場合は、古いバージョンを削除して1つのバージョンのみを保持すると、Magicが動作します。
Xcode 7以降を使用する場合は、製品を実行するだけです - >クリーン。これは私のために働きました。
私は同じ問題を抱えていました。いくつかのファイル.hと.mをプロジェクトにドラッグしていたので、Xcodeはこのエラーを表示し始めましたclang:error:リンカコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)実行中。
後で、他のSubFolderの下のXcodeプロジェクトに.h&.mが既にあることがわかりました。そのため、そのExtra .hと.mを削除し、プロジェクトをクリーンアップし、現在動作しています。
clang:error:リンカコマンドが終了コード1で失敗しました(呼び出しを表示するには-vを使用してください)このエラーにはいくつかの理由があります。確認する必要があります;どのような場合に当てはまりますか。
この問題を解決するには、次の手順に従ってください。
プロジェクト設定とビルドタブに行きます。"その他のリンカーフラグ"を検索してください。
Release and Changeのリンカフラグをダブルクリックします。
${TARGET_BUILD_DIR}/libCordova.a to ${BUILT_PRODUCTS_DIR}/libCordova.a
デバッグ クリーン およびビルドアーカイブについても同じ操作を行います。
私の問題は、複数のclass.mファイルでTAGという名前のNSStringを作成し、TAGの値を各クラスのString名に設定していたことです(例:NSString * TAG = HWGuiControl)。私はNSLogステートメントの前にクラス名を追加するのが簡単になるようにしました。 (私はAndroidでこのシステムを大成功で使用しました。2年後のプログラムフローの分析に最適です)。デバイスにデプロイすると、これはすべてうまくいきます。しかし、配布用のアーカイブを作成する時が来たとき、明らかにリンカは複数のファイルに現れるTAGという名前のNSStringと競合することができません。 TAGの名前をHWGTAGなどに変更するとうまくいきます。
私の場合は、.h .mファイルをあるフォルダから別のフォルダに移動しただけで、そのフォルダは後ろに存在していませんでした。だから私は最初にFinderにフォルダを作成してからFinderにファイルを移動してからそのフォルダを追加してプロジェクトから他のフォルダに移動したファイルの参照を削除
私は最良の応答はファイルのインポートを調べることであると思います、いくつかのインポートには問題があります。
例:#import "file.m"を含めるか、外部のfile.hを含めます。
...
Unity - ビルド設定 - プレイヤー設定 - SDKバージョン: Device SDK シミュレータsdkの代わりに試してみてください
私はそのようなエラーがあり、それを修正しました
私の場合、私はなぜコンパイラがこのタイプのエラーを表示するのかという.mファイルを含めています。
あなたは.mファイルではない最新のファイルインポートをチェックするべきです
私はこのエラーを得たとき私はもう一つの理由を共有したいと思います。
プロジェクトナビゲータ(Xcode 6.1.1)でプロジェクト名をシングルクリックで変更したため、プロジェクトがコンパイルされませんでした。私はプロジェクトの名前を古い名前に戻しました、プロジェクトは構築中でした。非常に非常に奇妙な、しかしそうはい私はこれに直面しました。この情報が役立つことを願っています。
ほんの少し前に私も同じ問題を抱えていました。これは私をここに導いた、それは何の助けにもならなかった。しかし、私は問題が何であるかを把握し、それを修正しました。問題は、私のヘッダファイルでtrig_nodeという名前のstructクラスのインスタンスを1つ宣言していたことです。[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;
}
シミュレータでプロジェクトをビルドするためには、選択したシミュレータでフレームワークがビルドされていることを確認する必要がありました(もちろん、私のプロジェクトではフレームワークを使用しています)。私のiPhone上に構築することについても同じことが言えるが、理由は分からないが同期していなければならないが、それは問題を解決する。
これが誰かに役立つことを願っています。
私はxcode 4.6でFMDBモジュールをエクスポートするとき私は同じ問題を抱えていました。後で私はこの問題を引き起こしていた私のファイルリストの中にfmdb.mを見つけました。私はプロジェクトから削除した後、それはうまく機能します
ワークスペース設定に移動して、次の変更を行ってください。
Workspace Setting:
Build System:
Legacy BuilPer-User
Per-User Workspace
DerivedData:
Workspace relative location
Build System
Use User Setting
フレームワークをインポートした後にこの問題が発生しました。 「ビルドフェーズ」では、フレームワークの名前が赤で強調表示されていました。私はフレームワークをもう一度追加して問題を解決しました。
私は自分のXCODEプロジェクトに2つの参照があることを理解するためにこの問題に遭遇しました。他の参照を削除するだけです。お役に立てれば
ビルド設定のリンクセクションのMach-O TypeをNothingからExecutableに変更して修正しました。
私の特定のエラーは次のとおりです。
ld: entry point (_main) undefined. for architecture armv7
これは明らかだったはずですが、それはmain.m
がCompile Sources
の下のBuild Phases
に含まれていなかったからです