ビルドエラー-ファイルに必要なアーキテクチャi386がありません


105

iPhoneアプリケーションをビルドすると、次のエラーが発生します。

ld:警告:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit、ファイルに必要なアーキテクチャi386がありません

私のアプリのすべてのフレームワークで同じです。これは以前に起こっていなかったので、それは非常に奇妙です。


これは、Snow Leopardと新しいiPhone SDK(Xcode 3.2)をインストールした後に起こりましたか?
アボカド2009

8
私の答えは問題を解決します。チェックしてください。
ジョーダン

9
回答で説明されていないもう1つの可能性は、非ユニバーサルフレームワークへの参照を追加した場合(つまり、armv6 / armv7フレームワークを追加してから、シミュレータービルドを実行しようとした場合)にこのエラーが発生することです。これは主に、独自のカスタムフレームワークを構築している場合の問題です。
2011年

@arothも正しいです。この質問
ArkReversed

回答:


131

これは、プロジェクトにフレームワークを追加し、そのフレームワークを誤ってプロジェクトディレクトリにコピーした場合に発生します。

修正方法は、プロジェクトディレクトリ(プロジェクトをディスクに保存する場所)でiphone SDK * .Frameworkファイルを確認し、それらを削除することです。

その後、プロジェクトは正常にビルドされます。


4
さらに、シミュレータではなくiOSデバイスでテストします。
ラプター

別のフレームワークがある場合、プロジェクトファイルを変更すると、そのファイルへの参照も削除されるように見えますが、これは機能し、簡単でした。おかげで、ジョーダン
texian

私には効きません。プロジェクトディレクトリに.frameworkファイルがありません。Fwiw、私はクリーンでビルドを行い、この問題が始まりました。どういうわけかきれいなものが壊れていたに違いありません。
Alyoshak

85

私にも同じ問題があり、解決策は簡単な修正であることがわかりました。バックアップしてから、projectMateまたはTextEditでproject.pbxproj(プロジェクトファイルバンドル内にあります)を開き、「/ * Begin XCBuildConfiguration section * /」というタイトルのセクションを検索します。FRAMEWORK_SEARCH_PATHSという名前のキーを探し、それとその内容を削除します(ビルド構成ごとに1回なので、2か所で削除しました)。これが私が削除したものの例です:

FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks\"",);

私のプロジェクトは、iPhoneデバイスとiPhoneSimulatorの両方でビルドできるようになりました。


2
これが説明どおりに機能することを確認できます。Xcode projsを異なるコンピューター間で移動すると、Xcodeはそのメタデータと簡単に接触できなくなるようです。この場合、3.0とLeopardがインストールされており、他の3.1とSnow Leopardがインストールされています。FRAMEWORK_SEARCH_PATHSメタデータはビルド設定で空白として表示されますが、実際のproject.pbxprojにはそれが含まれています。
アボカド2009

1
同意したFRAMEWORK_SEARCH_PATHSも、ビルド設定で空白として表示されました。ただし、説明に従ってproject.pbxprojファイルを手動で編集すると、問題が修正されました。
Alasdair Allan、

11
これは私にはうまくいきませんでした。しかし、あなたは私を見て正しい場所に連れて行ってくれます。私の.pbxprojにはFRAMEWORK_SEARCH_PATHSキーがありませんでしたが、LIBRARY_SEARCH_PATHSという名前のキーがありました。
反乱

@rebellionの2番目です。おそらく、新しいXCodeバージョンがキー名を変更しました。
Moshe

おかげで、私はpbxprojファイルにLIBRARY_SEARCH_PATHSキーも含まれていました。キーは、Xcode 3のプロジェクト設定に太字で表示されていますが、値はありません。これにより、何かがおかしいと思いました。Xcode 4プレビュー5でプロジェクトを一度開いた後、これが起こりました。
mvexel 2011年

43

ここで起こったことは、Xcodeが不思議なことに、特定のiPhoneデバイスSDKを指す「フレームワーク検索パス」エントリを追加したことです。たとえば、私は最近次のように設定されました:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks

これにより、コンパイラは誤ったアーキテクチャのフレームワークを見つけます。ターゲットのビルド設定の「フレームワーク検索パス」キーの下の値を削除すると、問題が解決します。


これは私の場合の問題でした。新しいライブラリを追加するたびに、たくさんの検索ディレクトリが追加されていました。参照を削除しても、以前は問題が発生していた検索ディレクトリのエントリがそこにあった。
darshansonde 2012年

私の場合、「フレームワーク検索パス」はすでに空です。私が取得している正確なエラーはld:iOSシミュレータ用のビルドですが、アーキテクチャi386 clangのMacOSXファイル '/usr/lib/libSystem.B.dylib'用にビルドされたdylibにリンクしています:エラー:リンカーコマンドが終了コード1( -vを使用して呼び出しを確認します) 私はMavericksでSDK 7.0を使用しています。
Ans

同じエラーが発生しました。[ビルド設定]のフレームワーク検索パスから値を削除しましたが、正常にコンパイルされます。
Nirav、2015

10

「プロジェクト設定の編集」に移動して「検索パス」を見つけた場合、XCodeでそれを言及したいと思います。「フレームワーク検索パス」のフィールドがあります。これを更新すると、プロジェクトファイルをハックする必要なく、問題が解決されます。

乾杯!

ジェシー


私は私を絶対に狂わせている同じ問題を抱えています。皆さんは解決策を知っているようですが、「project.pbxproj」ファイルが見つからず、「プロジェクト設定の編集」がある場所が見つかりません。
saman01

2
XCode 4.2.1では、次のようにして見つかりました。プロジェクトナビゲーターでプロジェクト名をクリックします。表示されるプロパティ画面で、[ビルド設定]タブを選択します。検索パスはこの画面にあります。それらを削除するのがうまくいきました。
dsteele

8

追加時にフレームワークをプロジェクトにコピーしていないことを確認してください。コピーした場合、元のパスが見つかりません。この問題を修正するには。プロジェクトのフレームワークフォルダーからAVFoundationフレームワークを削除してから再度追加しますが、今回は、コピーのチェックがオンになっていないことを確認してください。

これで解決しました!


8

別の方法で修正しました。このエラーが発生したのは、プロジェクトにsecurity.frameworkを2回追加したためです。xcodeでセキュリティフレームワークを表示できませんでした。ファインダーでプロジェクトを開き、このフレームワークを見つけました削除して問題を解決しました。


7

アプリがデバイス上で実行されることを意図している場合は、シミュレーターでアプリを実行しようとしていないことを確認してください。当たり前のように聞こえるかもしれませんが、とにかくチェックしてください。


5

何かが削除される可能性はありますが、プロジェクトファイルで何かが台無しにされるのは私の経験です。その「何か」が何であるかを私はまだ突き止めていません。SDKのインストールに問題がなければ、同様の問題が発生しました。いくつかのオプションがあります。

まず、すべてのファイルを新しいプロジェクトに追加します。これは通常は機能するようです。でもちょっと苦痛。

次に、XCode / Get Info / Build / Library Search Pathsでプロジェクトを右クリックします。/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/libのような新しいパスを追加します。各文字列の適切なバージョン(2.2.1など)とプラットフォーム(シミュレーターまたはiPhoneOS)を追加します。フレームワークに問題がある場合は、フレームワーク検索パスに対して同様のアクションを実行します。

3つ目は、より手間がかかりますが信頼性が高く、MyProject.xcodeproj内からproject.pbxprojを開くことです(これにはTextmateが適しています)。「/ * Begin XCBuildConfiguration section * /」、「LIBRARY_SEARCH_PATHS」、「FRAMEWORK_SEARCH_PATHS」を探します。必要に応じてパスを追加または変更し、ファイルを保存します。

いずれにせよ、お尻の痛み、私はこれが数回起こったことがあるので、原因を正確に指摘したいと思います。プロジェクトは正常にビルドされ、その後、正常に動作し、ほとんど理由がないように見えるため、そうすることを拒否します。


私は新しいプロジェクトを始めるつもりです。ああ、まあ。
Gabe Shahbazian

「フレームワーク検索パス」のビルド設定は、ターゲットの情報パネルから修正できます。
John Cromartie

エラーが発生しましたが、上記のフレームワークの問題はありませんでした。奇妙なことに、1台のコンピューターでプロジェクトをSVNからチェックアウトして正常にビルドできたのに対し、他の2台では、すべてのビルドで突然このエラーが発生しました。他のあらゆる種類のソリューションを試した後の唯一の(そしてかなり単純な)修正は、新しい空のプロジェクトを作成し、そこにすべてのファイルを移動することでした。
mmattke

この方法でうまくいきました。ある日、たった1つの構成でビルドが突然停止する作業プロジェクトセットがありました。理由はありません。上記のテキストメイト手法を使用して、「$(SDKROOT)/ Developer / Library / Frameworks」がその構成にないことに気付きました。理由はわかりませんが、Xcodeを使用してこれを確認することはできませんでした。
ロブ

4

「プロジェクト設定の編集」と「検索パス」の検索「フレームワーク検索パス」のフィールドがあります。すべて削除!!


4

それは私にもここで起こりました。素晴らしいパートナーのおかげで私たちは答えを見つけました。Xcodeがシミュレーターをポイントしている可能性があります。代わりにIOSデバイスに変更してください.....後にスムーズにビルドされます...


1

ターミナルからフレームワークでfileコマンドを実行します

file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit

UIKitバイナリがどのアーキテクチャと互換性があるかを知らせるメッセージが返されるはずです。「i386」がリストに表示されない場合は、なんとかしてi386バージョンのUIKitを削除できています。これは、シミュレーター用にビルドできないことを意味します。これを修正するには、再インストールする必要がありますSDK。

他のエラーが発生した場合、うまくいけば、実際の問題が何であるかを理解するのに役立ちます。


SDKを再インストールしても、まったく同じビルドエラーが発生します。
Gabe Shahbazian 09/09/22

私はこの問題を抱えています。フレームワークとライブラリのパスはすでにチェックされており、クリーンです。コマンドファイル/Developer/Platforms.../UIKit.framework/UIKitは、「Mach-O動的にリンクされた共有ライブラリアーム」のみを示します。SDK全体をインストールする必要がありますか?それとも、フルバージョンのフレームワークをコピーできますか?
アレクサンダーフラディアーニ

学ぶのもいい!私の場合、armv7とi386はありますが、armv6はありません。
Nianliang 2012

1

私の場合も同じ問題があり、Xcode3.1.3という古いXcodeフォルダーがあったことに気づきました。古いバージョンだったので、名前を変更しただけで、魔法のようになりました。


1

ターゲット設定でライブラリ検索パスを確認してください。時々間抜けなライブラリがそこに入力され、これは同様のエラーを与えます。

このセクションのすべてのエントリを削除できます。


0

私は自分のライブラリ(WM_GSRecognizerLib)で作業しているため、少し違うことを経験しましたが、エラーは同じです。

何が起こったのか:一部の更新により、libをターゲットとするパス(.a)は、「Debug-iphoneos」フォルダー(生成された場所)からのものでした。Generic iOSデバイス向けのコンパイルはうまくいきましたが、シミュレーターではうまくいきませんでした。

この問題に対して私がしたことは、「Debug-iphonesimulator」フォルダからのバイナリも含めることです。

説明がここにあるため、このトピックに役立ちます。デバイスにはarm64 / armv7 / armv7sのバイナリが必要ですが、シミュレータにはi386が必要です。


0

私の解決策は、シミュレータのターゲットデバッグを設定することでした。はい。gitstatusを見て、.projectにのみアーキテクチャとして追加された新しい行を確認してください。これを設定しない場合、ビルドはすべてのアーキテクチャで実行され、i386などの不足しているアーキテクチャが表示されます。明らかに主要な問題は、特定の種類の特定のアーキテクチャを実装するフレームワークを使用することです。


-1

私も同じエラーがxcodeバージョン4.0.2を使用しているので、xcodeプロジェクトファイルを選択し、そこから[ターゲット]オプションを選択したので、プロジェクトのアプリを表示できるので、それをクリックしてビルドに行きました設定オプション。

検索オプションで、私は「フレームワーク検索パス」と入力し、すべての設定を削除してから、ビルドボタンをクリックしました。

感謝とよろしく

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