
gccのコンパイルの結果ファイルは他のlinux環境で動きますか?
gccのコンパイルの結果ファイルは他のlinux環境で動きますか?
ソースコードを他のlinux環境に入れて再コンパイルする必要はありますか?
投稿日時 - 2010-09-08 10:08:57
コンパイラの吐き出すコードにはオプション指定によって2種類のものを出力指定できます。
デフォルトで「dynamic」
これは、共通ライブラリを外部において実行コードの省力化を計ったもので、CPU及び外部ライブラリのバージョンに依存します。
オプション指定で「static」
こちらは、外部ライブラリをコード内に取り込んで、ライブラリに依存はしなくなりますが、実行ファイルは肥大化します。
結果的には
CPUが異なる → 同じLinuxでも実行ファイル(バイナリファイル)に互換性はない(例:i386対PPC)
CPUが同じ/ライブラリ環境が違う → staticでコンパイルしたものは動作する
CPUもライブラリ環境も同じ → 普通に動作する
ソースレベルでもライブラリが不足などしていたら再コンパイルできないことがあります。
だいたいこんな感じかと思います。
投稿日時 - 2010-09-08 10:36:51
ご回答ありがとうございました
投稿日時 - 2010-09-08 18:02:47
このQ&Aは役に立ちましたか?
5人が「このQ&Aが役に立った」と投票しています
回答(3)