7

そのため、最近Xcodeを4.5に更新し、iOS6電話を手に入れることができました。私はシミュレーター(4.3 / 5.1 / 6.0)でテストを行っていましたが、実際のiOS 6電話でビルドすることにしたとき、このエラーが発生しました。

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv6 armv7 i386).

いくつかのルックアップを実行し、ビルド設定に移動して有効なアーキテクチャを変更してarmv7を含めることで修正しました。これにより、想定どおりの処理が実行されました。

ただし、このエラーが発生したことを追加すると

ld: file is universal (3 slices) but does not contain a(n) armv7s slice: some static library framework for architecture armv7s

少し見てみると、静的ライブラリフレームワークはiOS 6をサポートしておらず、簡単に修正できると楽観的ではないため、すべての問題を引き起こしているように感じます。しかし、ネット上で自分の状況を正確に把握することができなかったので、これを私よりよく知っていて、私を助けてくれる人がいることを望んでいます。ありがとう

注:静的ライブラリはコードのいたるところにあり、それを削除することはほとんどオプションではありません

4

5 に答える 5

10

「Build Active Architecture Only」をYES --> NOに変更してみることができます。私にとってはうまくいきます。

于 2013-04-02T02:06:12.797 に答える
5

ビルドするには、アプリケーションがリンクするすべての静的ライブラリが、アプリケーションのすべてのアーキテクチャ用のコードを生成する必要があります。

Xcode 4.5 がプロジェクトを更新して armv7s コードをビルドしたようですが、アプリケーションのアクティブなアーキテクチャに armv7s を追加することを怠っていました。

それを修正すると、スタティック ライブラリが armv7s コードを生成していないのに、アプリケーションが armv7s 用にビルドしようとしていることが問題のように見えます。

それが問題である場合、これを修正する方法は 2 つあります。アプリケーションで armv7 コードのみを生成する (armv7s コードの必要性を排除する) 場合は、アプリケーションのターゲット設定を次のように変更する必要があります。

ここに画像の説明を入力

... または、アプリケーションとリンクされたすべての静的ライブラリに、次のようなビルド設定を持たせたい:

ここに画像の説明を入力

armv7 コードは 3gs 以上で実行されます。armv7s コードは iPhone 5 でのみ実行され、わずかに高速になります。

したがって、テストする iPhone 5 にアクセスでき、スタティック ライブラリのソース コードがある場合は、おそらく 2 番目のオプションが最適です。それ以外の場合は、ライブラリが少なくとも armv7 コードを生成していると仮定すると、アプリケーションが armv7 をビルドしようとしない限り、問題はありません。

ライブラリが xCode 4.5 でサポートされていない armv6 コードのみをビルドしている場合は、少なくとも armv7 コードを生成するようにビルド設定を変更する必要があります。

于 2012-10-03T21:04:59.433 に答える
2

Xcode 4.5 は armv6 をサポートしなくなったため、このアーキテクチャを削除する必要があります。

既にお気づきのように、使用しているライブラリは現在不可欠な armv7 をサポートしていないようです。

ライブラリを正しいターゲットでコンパイルする以外に方法はないと思います。ソース コードがあれば、これは簡単です。サードパーティの場合、更新はサードパーティに依存します。ただし、ライブラリを更新しないと寿命が来てしまうことがわかります。

于 2012-10-03T22:01:21.030 に答える
1

同様の問題があります。ターゲットプロジェクトのビルド設定で「アクティブなアーキテクチャのみをビルドする」を「いいえ」に変更することで解決しました。

ここに画像の説明を入力

于 2013-05-30T09:41:12.143 に答える
0

armv7s を削除し、armv7 (および/または armv6) を追加します。

于 2012-10-03T21:25:24.977 に答える