プロが教える店舗&オフィスのセキュリティ対策術

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

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

A 回答 (3件)

コンパイラの吐き出すコードにはオプション指定によって2種類のものを出力指定できます。



デフォルトで「dynamic」
 これは、共通ライブラリを外部において実行コードの省力化を計ったもので、CPU及び外部ライブラリのバージョンに依存します。
オプション指定で「static」
 こちらは、外部ライブラリをコード内に取り込んで、ライブラリに依存はしなくなりますが、実行ファイルは肥大化します。

結果的には
 CPUが異なる → 同じLinuxでも実行ファイル(バイナリファイル)に互換性はない(例:i386対PPC)
 CPUが同じ/ライブラリ環境が違う  → staticでコンパイルしたものは動作する
 CPUもライブラリ環境も同じ → 普通に動作する

ソースレベルでもライブラリが不足などしていたら再コンパイルできないことがあります。
だいたいこんな感じかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/08 18:02

Linuxのパッケージ管理による依存関係解消とか


そのへんの知識があると、こういう悩み方は無いわけで…
Linux自体への理解が浅いように見えます。

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

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

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



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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!