web-dev-qa-db-ja.com

Xcode4リンクの問題。リンクされているアーキテクチャではないアーカイブ用にファイルが作成されました(arm6)

最近、Xcode4に切り替えました。プロジェクトをコンパイルすると、次のエラーが発生しました。

ld: warning: ignoring file /Users/myname/Library/Developer/Xcode/DerivedData/appname-hezrgyqimckztgbdlslkavphdclw/Build/Products/Debug-iphoneos/libTapkuLibrary.a, file was built for archive which is not the architecture being linked (armv6)
Undefined symbols for architecture armv6:
  "_OBJC_CLASS_$_TKLoadingView", referenced from:
      objc-class-ref in RootViewController.o

TapkuLibraryを開き、そのアーキテクチャが「標準(armv6 armv7)」に設定されていることを確認しました。

この問題を解決するにはどうすればよいですか?

51
Seunghoon

何が問題を引き起こしたのかを見つけました。 TapkuLibraryの[Build Active Architecture Only]を[Yes]から[No]に変更すると、問題なくコンパイルされます。

111
Seunghoon

受け入れられた答え の反対を行うことにより、この問題を解決することができました-「アクティブアーキテクチャのみをビルド」をNOからYESに変更しました。

35
Josh Brown

同じ問題がありました。しかし、理由は違うと思います。私は、シミュレーター用に作成されたlibrary.aファイルを使用して、デバイス上で実行しようとしました。シミュレーターとデバイスには異なる.aファイルが必要であることがわかりました。これが誰かを助けることを願っています;)

For example, here I have imported different library files for device and simulator

11
Zaraki

XCodeを4.5に、iOSをiOS6にアップグレードしたときに、この問題に遭遇しました。 GMGridViewについては、まさにそれが起こりました。シミュレータ用ではなく、デバイス専用です。

次の手順でこれを修正しました。1)GMGridViewプロジェクトに移動->ビルド設定2)設定->アーキテクチャで、「標準(armv7、armv7s)」を選択

次に、すべてを(DerivedDataを含む)クリーンアップして再構築します。

それが役に立てば幸い!

11
sonoshin

Armv6アーキテクチャを削除し、armv7専用にコンパイルしてください。

6
Macmade

「友好的でない」プロジェクト(私の場合はGMGridView)をクリックして管理しました。 「Architectures」タブで、値を何かから変更しました(正確にはもう覚えていませんが、そうでした:)「armv7、armv6s」から「armv7、armv7」に。その後、それは私のために働いた。

2
tmighty

これで問題が解決しました:

Three20などの一部の外部ライブラリは、

ビルド設定->アーキテクチャ-> iOS SDK

値は標準の「armv7 armv7s」とは異なる「armv6 armv7」です

ドロップダウンして「標準」を選択すると、うまくいきました。

2
Val

私のために働いた他の何かは、すべてのサブプロジェクトのアーキテクチャがarmv6とarmv7に設定されていることを確認し、各サブプロジェクトのTARGETとPROJECTの両方を設定していることを確認していました。すべてをクリーニングして再構築した後、問題なく機能しました。

2
AndyDunn

プロジェクトのビルドバリアントが「通常」に設定されていることを確認してください。

他のプロジェクトを含むプロジェクトを構築している場合は、メインプロジェクトのDerivedDataフォルダー内を見てください。 「lipo -info yourarchive.a」でアーカイブファイルを調べます。また、これらのアーカイブのタイムスタンプを調べます。これらのライブラリが再構築されていないか、間違ったアーキテクチャである古いバージョンのアーカイブに対してリンクしようとしていることがあります。

私の場合、Xcodeをシャットダウンし、メインプロジェクトのDerivedDataフォルダーを削除しました。これにより、Xcode 4でメインプロジェクトを再度開いたときに完全な再構築が強制されました。完全な再構築により、i386アーカイブが作成され(または正しいバージョンが見つかり)、シミュレータバージョンが正しくリンクされました。

1
russes

Tapku情報設定内にアドホック構成を作成するだけでこれを解決できました...

XCODE 4、プロジェクト>アーカイブ= -lTapkuLibraryのライブラリが見つかりません-問題-devinross/tapkulibrary-GitHub

1
epinom

ファイルを無視するという警告が表示されたら-lipo -info以下のアーキテクチャを見つけるために無視されたファイルで

lipo -info libTapkuLibrary.a

これは、i386、armv6、armv7、armv7s、x86_64などのいずれかを出力します。一般に、そのアーキテクチャはターゲットビルドプラットフォームと一致する必要があります。例えば。

  • i386 = iOSシミュレータまたはMac OS Xでの32ビットビルド
  • armv6 armv7 arm7s = iOSデバイス
  • x86_64 = Mac OS Xでの64ビットビルド

不一致に応じて、ターゲットプラットフォーム用にライブラリを再構築するか、ターゲットプラットフォームを変更する必要があります。

注:ファットバイナリの場合、lipo -infoは、上記のアーキテクチャの組み合わせを出力します。

1
Kiran

これは私のために働いた:

  1. 問題のフレームワークの「プロジェクト」ファイル(xcodeproj)をクリックします。

  2. フレームワークの「プロジェクト」(「ターゲット」ではない)の「情報」タブに移動します。

  3. 「構成」を展開し、「デバッグ」と「リリース」の両方に2つの構成が設定されていることを確認します。1つはフレームワークの「プロジェクト」用、もう1つはフレームワークの「ターゲット」用です。フレームワークの場合、「ターゲット」はアプリケーションではなくライブラリにコンパイルされるため、混乱するのは簡単です。

  4. 「デバッグ」では、プロジェクトを「デバッグ」に設定し、ライブラリを「共有」に設定する必要があります

  5. 「リリース」では、プロジェクトを「リリース」に設定し、ライブラリを「共有」に設定する必要があります

  6. コンパイル、実行、お楽しみください。

  7. これを理解しようとしてプロジェクト全体をマングルすることになった場合は、アプリケーションのプロジェクトビルドフェーズを(Gonが提案したように)ダブルチェックすることをお勧めします。ライブラリは、ドライブ上に存在しない場合でも、赤で強調表示されているはずです。そうでない場合は、「共有」に設定されている限り、再び追加できるはずです。

  8. あなたが本当に本当に本当にあなたのプロジェクトを壊したなら、russesが示唆したように、あなたはあなたのDerivedDataフォルダを吹き飛ばさなければならないかもしれません。また、Xcodeにはあちこちでゴミを保存する方法があるため、「Organizer」も確認してください。

  9. ああ、「armv6」が正しいことを確認しましたか? :)

1

Armv6/armv7が実際にあなたが思っているものとは少し異なることを示す別のスレッドのおかげでこの問題を修正しました: pgradeing to xcode 4 error No architectures for compile

0
pottedmeat

上記のすべてのオプションを試しましたが、どれも機能しませんでした。

これは正しい答えです:

プロジェクト内のフレームワークをドラッグするだけでは、適切にリンクされません(または、これらの線に沿った何か)、

行う必要があるのは、ビルドフェーズで追加するフレームワークを選択することです(プロジェクトの青いアイコンをクリックし、[ターゲット]でプロジェクト名を選択し、[ビルドフェーズ]タブを選択します)、詳細については こちら を参照してください。

0
Gon

同じ問題を抱えていて、ページからさまざまな解決策を試してみました。ライブラリがarm64用にビルドされていないというメッセージがまだありました。

最後に私がそれを解決した方法:

  • テキストエディタでライブラリのproject.pbxprojを開きました
  • VALID_ARCHSを検索
  • 4つのオカレンスがあり、2つにarm64が含まれていませんでした
  • チェーンに手動でarm64を追加しました(VALID_ARCHS = "arm64 i386 armv7 armv7s")
  • ライブラリを再構築し、それは大丈夫だった

XCodeによって表示されるビルド設定が不完全で、makeファイルに正確に対応していない場合があります。

0
Eino Gourdin

これらの答えはどれも私にとってはうまくいきませんでした。 (同様の警告メッセージ、異なる静的ライブラリプロジェクト)。私にとっては、ターゲットのビルドディレクトリを尊重するようにXCodeを構成し、ローカルのbuild/問題の原因となったディレクトリ。 「派生データ」フォルダーを使用するようにXCOdeを構成すると、修正されました。

0
PEZ

Three20ライブラリでこの問題が発生しました。最終的にそれをやったのは、プロジェクト形式をXcode 3.1からXcode 3.2に切り替えて、「ビルドアクティブアーチのみ」を「いいえ」のままにしておくことでした。

0
FishStix