ファイルはユニバーサル(3つのスライス)ですが、iOSの静的ライブラリのARMv7-sスライスエラーは含まれていません。バイパスしますか?


403

Xcodeバージョンをアップグレードし、外部静的ライブラリを使用すると、次のメッセージが表示されます。

ld:ファイルはユニバーサル(3スライス)ですが、a(n)を含まないarmv7sスライス:アーキテクチャarmv7sの/ file / location clang:エラー:リンカーコマンドが終了コード1で失敗しました(-vを使用して呼び出しを確認してください)

ライブラリの開発者がライブラリをまだ更新していない場合、これをバイパスしてライブラリにサポートを追加する方法はありますか?


これは今のところ良い解決策のようです-galloway.me.uk/2012/09/hacking-up-an-armv7s-library
Rajavanya Subramaniyan

回答:


418

ARMv7-sなどのアーキテクチャのサポートを削除する場合は、[ プロジェクト] -> [ ビルド設定] -> [有効なアーキテクチャ]からアーキテクチャを削除してください。

ライブラリが更新されるまで、これを一時的な解決策として使用できます。ライブラリからではなく、メインプロジェクトからアーキテクチャを削除する必要があります。

または、デバッグ構成の「アクティブアーキテクチャのみをビルド」のフラグを「はい」に設定できます。リリース構成の[Build Active Architecture Only]を[No]のままにしておきます。そうすることで、リリース前に、使用しているサードパーティライブラリをアップグレードする必要があることを通知します。


11
ライブラリを再コンパイルする必要はありません。ライブラリを使用しているプロジェクトからこのフラグを削除できます。
ニコラス

4
armv7sサポートを使用してコンパイルされていない古いアプリも実行する必要があるため、これは機能します。ただし、いくつかの特定の最適化が失われます。いずれにしても、これは一時的な回避策です。
ニコラス

2
Dropboxフレームワークはこの問題のために更新されましたforums.dropbox.com/topic.php?id=90014を
railparade

6
有効なアーキテクチャリストからarmv7sを削除することは私にとってはうまくいきましたが、アーキテクチャから削除することもできました。ただし、どちらの場合も、有効なアーキテクチャのリストにNo architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).追加i386しないと解決できないリンカーから取得します。
levigroker 2012

6
いいえ、armv7sはiPhone 5で使用されているA6プロセッサの命令セットです。A6は下位互換性があるため、引き続きarmv7命令セットを実行します。
ニコラス

191

ターゲットのビルド設定で「Build Active Architecture Only」を「Yes」に切り替えただけで、今は問題ありません。


1
@ Blasco73あなたがすごいことを知っていますか?あなたがすべき。さて、あなたは素晴らしいです!
thandasoru

15
どうすればこれが良い解決策になるでしょう。エラーは削除されますが、市場に出回っているのではなく、現在のアーチのビルドのみが取得されます...
esbenr

27

iOS 5.1フォンのこの問題から解放するには、プロジェクトの「有効なアーキテクチャ」からarmv7sを削除してみてください


13

この場合にも適用される修正をここに投稿しました。基本的に、外部ライブラリで16進数の検索と置換を行って、ARMv7のコードであると考えさせます。を使用lipoして3つの静的ライブラリに分割し、ARMv7を1つ複製/変更してlipoから、再度使用して4つのアーキテクチャすべての新しいライブラリをアセンブルできるはずです。


5

iPhone 5(ARMv7s)のFlurryサポート昨日の投稿で述べたように、Flurryは水曜日の発表後すぐに、新しいiPhone 5でARMv7sプロセッサをサポートするバージョンのiOS SDKの開発に着手しました。

作業が完了し、SDKがサイトで入手できるようになりました。


4

メニューのプロジェクト->ビルド設定->を使用します

次に、「有効なアーキテクチャ」からarmv7sを削除します。標準が選択されている場合は、それを削除してからarmv7を追加します。


1

これが誰かに起こった場合。サードパーティのコードで使用するために自分のライブラリを構築しました。配信用にビルドしているときに、誤ってiPhone 4Sをプラグインしたままにしたので、Xcodeはプロジェクトの設定に従うのではなく、プラグインされたアーキテクチャ用のライブラリのみをビルドしました。プラグインされているデバイスをすべて削除し、ライブラリを再構築してリンクします。これで問題ありません。

それが役に立てば幸い。


0

私の場合、少し古いサードパーティライブラリにリンクしていました(XCode 5 / iOS 7上のiOS 6用に開発されました)。したがって、サードパーティのライブラリを更新し、クリーンアップとビルドを行う必要がありましたが、正常にビルドされました。

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