プログラムはどのようにして i386 と ppc を同時にサポートしますか?
-
18-09-2019 - |
質問
/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
. 。他にもたくさんリストされていますが、完全を期すためにここに記載されています。
他のヒント
それはと呼ばれます ファットバイナリ.
バイナリには、両方のアーキテクチャのネイティブ コードのコピーが含まれています。バイナリ形式とオペレーティング システムはそれをサポートしている必要があり、ファイル内のどこを検索すれば正しいコードが見つかるかを認識できます。