プログラムはどのようにして i386 と ppc を同時にサポートしますか?

StackOverflow https://stackoverflow.com/questions/1148964

質問

/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 などでどのコンポーネントを削除できますか?

役に立ちましたか?

解決

それはと呼ばれます ユニバーサルバイナリ. 。つまり、実行可能ファイルには両方のタイプの実行可能コードが含まれています。アップルには、 公開された文書 開発者がいずれかのプラットフォームで実行できるアプリケーションを構築する方法について説明します。

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

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

他のヒント

それはと呼ばれます ファットバイナリ.

バイナリには、両方のアーキテクチャのネイティブ コードのコピーが含まれています。バイナリ形式とオペレーティング システムはそれをサポートしている必要があり、ファイル内のどこを検索すれば正しいコードが見つかるかを認識できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top