こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

gccのコンパイルの結果ファイルは他のlinux環境で動きますか?

gccのコンパイルの結果ファイルは他のlinux環境で動きますか?

ソースコードを他のlinux環境に入れて再コンパイルする必要はありますか?

投稿日時 - 2010-09-08 10:08:57

QNo.6167054

困ってます

質問者が選んだベストアンサー

コンパイラの吐き出すコードにはオプション指定によって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)

ANo.3

Linuxのパッケージ管理による依存関係解消とか
そのへんの知識があると、こういう悩み方は無いわけで…
Linux自体への理解が浅いように見えます。

他者の作成したソフトについての問題なのか
自作ソフトの公開に関わる問題なのか
それによって、最適解は変わってくると思います。

ライブラリのライセンスの問題も関わってくるかもしれません。

投稿日時 - 2010-09-08 14:55:21

ANo.2

Linux と一言で言っても、Fedora、RedHat などさまざまなディストリビューションがある上、それぞれにバージョンがあり、実行環境が異なっています。

ですから、コンパイルされた実行ファイルが自分の実行環境と合っていれば動作しますが、そうでなければ動作しません。

ソースコードを他のLinux環境に入れて再コンパイルする必要があります。

が、ほとんどのディストリビューションでは、既にほかの人がコンパイルした実行環境を配布しているので、それを探す方が早いと思います。

投稿日時 - 2010-09-08 10:38:05