• ベストアンサー

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

gccのコンパイルの結果ファイルは他のlinux環境で動きますか? ソースコードを他のlinux環境に入れて再コンパイルする必要はありますか?

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

コンパイラの吐き出すコードにはオプション指定によって2種類のものを出力指定できます。 デフォルトで「dynamic」  これは、共通ライブラリを外部において実行コードの省力化を計ったもので、CPU及び外部ライブラリのバージョンに依存します。 オプション指定で「static」  こちらは、外部ライブラリをコード内に取り込んで、ライブラリに依存はしなくなりますが、実行ファイルは肥大化します。 結果的には  CPUが異なる → 同じLinuxでも実行ファイル(バイナリファイル)に互換性はない(例:i386対PPC)  CPUが同じ/ライブラリ環境が違う  → staticでコンパイルしたものは動作する  CPUもライブラリ環境も同じ → 普通に動作する ソースレベルでもライブラリが不足などしていたら再コンパイルできないことがあります。 だいたいこんな感じかと思います。

get_star
質問者

お礼

ご回答ありがとうございました

その他の回答 (2)

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.3

Linuxのパッケージ管理による依存関係解消とか そのへんの知識があると、こういう悩み方は無いわけで… Linux自体への理解が浅いように見えます。 他者の作成したソフトについての問題なのか 自作ソフトの公開に関わる問題なのか それによって、最適解は変わってくると思います。 ライブラリのライセンスの問題も関わってくるかもしれません。

回答No.2

Linux と一言で言っても、Fedora、RedHat などさまざまなディストリビューションがある上、それぞれにバージョンがあり、実行環境が異なっています。 ですから、コンパイルされた実行ファイルが自分の実行環境と合っていれば動作しますが、そうでなければ動作しません。 ソースコードを他のLinux環境に入れて再コンパイルする必要があります。 が、ほとんどのディストリビューションでは、既にほかの人がコンパイルした実行環境を配布しているので、それを探す方が早いと思います。

関連するQ&A