Mac OS XとLinuxのバイナリ互換性
私自身、システムのようなUNIXの内部動作やプログラミング全般については比較的新しいので、この質問は素朴で愚かに見えるでしょう。 準備はいい?OK!私は約3レベルの滑らかさを経験します。 同様のハードウェアを備えた2つのシステムがあります(主要なポイントはプロセッサです。標準のIntel Core 2 Duoとしましょう)。 1つは実行中です(ここにLinuxディストリビューションを挿入します:以降はUbuntuを使用します)。もう1つは実行中です。たとえば、Mac OS Xです。 同等のプログラムをコンパイルします。次のように言いましょう。 int main() { int cat = 33; int dog = 5*cat; return dog; } 共有ライブラリの影響をまだ考慮したくないため、コードは非常に単純です。 それぞれのシステムでコンパイルされた場合。出力の主な違いはELFとMach-Oの問題ではありませんか?フォーマットの各バイナリを削除し、フラットなバイナリを残した場合、逆アセンブルされたマシン命令は同じになりませんか?(おそらく、コンパイラの習慣/傾向に応じていくつかの違いがあります)。 1.) Ubuntuシステムから生成されたフラットバイナリをMach-Oフォーマットで再パッケージ化するプログラムを開発する場合、Mac OS Xシステムで実行されますか?次に、上記の想定プログラムのコンパイル済みバイナリのみがあり、フラットバイナリを再パッケージ化するためのこの神秘的なツールがある場合、単純なプログラムはMac OS Xシステムで実行できますか? それでは、もう少し詳しく見てみましょう。 現在、次のようなソースを備えたプログラムがあります。 #include <stdio.h> int main() { printf("I like tortoises, but not porpoises"); return 0; } 2.)このプログラムがコンパイルされ、静的にリンクされていると仮定すると、魔法のプログラムは未加工のバイナリをMach-O形式で再パッケージし、mac os …