5

/binにあるプログラムでi386およびppcアーキテクチャをサポートする方法を知りたいです。

私は例えば走ります

bin  $ file amber

私は得る

amber: setgid Mach-O universal binary with 2 architectures
amber (for architecture i386):  Mach-O executable i386
amber (for architecture ppc):   Mach-O executable ppc

プログラムはソースコードでi386とppcをどのようにサポートしていますか?

つまり、ppc -architectureのサポートを削除した場合、たとえば/ bin /amberでどのコンポーネントを削除できますか?

4

2 に答える 2

10

これはユニバーサルバイナリと呼ばれます。つまり、実行可能ファイルには両方のタイプの実行可能コードが含まれています。Appleには、開発者がどちらのプラットフォームでも実行できるようにアプリケーションを構築する方法を説明したドキュメントが公開されています。

実行可能ファイルlipoを使用して、ファイルから実行可能ファイルのいずれかのバージョンを削除できます。実行可能ファイルに1つのバージョンのみを含める場合は、これを使用lipoしてこれを実現できます。

これらはユニバーサルバイナリ用に選択する「最も安全な」アーキテクチャですが、ppcとだけではないことに注意してください。i386のマンページを読んでくださいarch; ppcここで、最新のOSXバイナリには、、、、またはppc64のいずれかが含まれている可能性が高いことがわかります。他にもたくさんリストされていますが、完全を期すためにそこに存在します。i386x86_64

于 2009-07-19T00:45:22.923 に答える
5

これはファット バイナリと呼ばれます。

バイナリには、両方のアーキテクチャのネイティブ コードのコピーがあります。バイナリ形式とオペレーティング システムがそれをサポートしている必要があるため、ファイル内の正しいコードを探す場所を知ることができます。

于 2009-07-19T00:46:49.477 に答える