x86-64 Red Hat Linux用のGCC 4.4.4を使用してコンパイルされたバイナリファイル(Cプログラム)をダウンロードしました。バイナリファイルの実行
GCC 4.2.1を実行しているMac OS X(Lionも同様にx86-64を実行しています)で実行しようとすると、次のようになります:cannot execute binary file
?それをバイナリファイルとして検出することはできません。
なぜでしょうか?私はファイルが既にコンパイルされているので、gccのバージョンはそれと関係がないと信じています。両方のマシンが動作するx86-64のためにコンパイルされています。誰かが説明できますか?
両方ともx86-64を実行しないでください。ある意味では、コンパイラは、両方のマシンで同じx86アセンブリにコンパイルします。つまり、アセンブラはアセンブリコードを各マシンの異なるバイナリファイルに変換するでしょうか? – darksky
実際の命令のコンパイル結果は同じかもしれませんが、私たちはNayefc OSを持っていると言います - すべてのグローバル変数で実行可能ファイルを配置し、次に関数、ハードコーディングされたテキスト文字列を作成したいと思うかもしれません。最初に関数、次に27680バイトのギャップ(私はそれが好きなので)。 - あなたはポイントを得る。したがって、Windows EXEはLinuxのexeと異なり、Mac exeの可能性があります –