2012-10-03 18 views

答えて

98

アーキテクチャーはビルドしたいものです。有効なアーキテクチャーは、コードベースでビルドすることができるものです。

armv7のバイナリをビルドしたいだけかもしれませんが、同じソースコードをarmv7とarmv6にコンパイルするとうまくコンパイルできます。したがってVALID_ARCHS = armv6 armv7 armv7sですが、ARCHS = armv7sと設定するのは、実際にはとなりますので、コードを使用してを作成してください。

それとも、アップル-ESE中:識別子の

archsを(アーキテクチャ)

スペース区切りリスト。バイナリの対象となるアーキテクチャ(ABI、プロセッサモデル)を指定します。このビルド設定で複数のアーキテクチャが指定されている場合、生成されるバイナリには、指定されたアーキテクチャごとにオブジェクトコードが含まれる場合があります。

と:識別子の

VALID_ARCHS(有効なアーキテクチャ)

スペース区切りリスト。バイナリを構築するためのアーキテクチャを指定します。ビルド中、このリストはARCHSビルド設定の値と交差します。結果のリストは、バイナリが実行可能なアーキテクチャを指定します。結果のアーキテクチャリストが空の場合、ターゲットはバイナリを生成しません。

出典:実際にはXcode Build Setting Reference

、あなただけではVALID_ARCHSを残し、それを変更することを心配し、ちょうどあなたが構築するアーキテクチャを設定するARCHSをいじるません。通常は、デバッグビルドをNATIVE_ARCHに設定します。これは、テスト/実行するマシンのデバッグバージョンのみをビルドし、サポートする予定のアーキテクチャ全体のリリースビルドをリリースするためです。

+0

"結果のアーキテクチャリスト"がどこにあるか知っていますか?????????? – DanMoore

+1

@DanMoore "結果のアーキテクチャリスト"は、ビルド時にメモリ内で行われます。 – Saltymule

+2

@ JeremyW.Sherman VALID_ARCHSは役に立たないと思われますか? – onmyway133

4

アップルのドキュメントから、XcodeのバイナリはValid ArchitecturesArchitecturesと交差するリストであることがわかりました。

だから、私は彼が言うようにジェレミーの答えは、正しいとは思わない:だから多分あなただけarmv7sのためのあなたのバイナリを構築したい

が、同じソースコード
はのARMv7の罰金コンパイルしますおよびarmv6。したがってVALID_ARCHS = armv6 armv7 armv7sですが、 ARCHS = armv7sと設定するのは、実際にコードを使ってビルドしたいからです。バイナリのXcodeの結果を構築します

あなたがVALID_ARCHS = armv6 armv7 armv7sを設定し、ARCHS = armv7sを設定し、ARMv6の/のARMv7と、それは互換性がありませんでした、armv7sです。

armv6/armv7/armv7sと互換性がある場合は、VALID_ARCHS = armv6 armv7 armv7sARCHS = armv6と設定する必要があります。このようにして、バイナリXcodeの結果はarmv6となり、ARMプロセッサは下位互換性があるため、armv6/armv7/armv7の両方で正常に実行できます。

+1

彼はそうだった。「あなたが実際にあなたのコードを**作成したいから**だから。 – Laszlo

関連する問題