mac です。 既にいくつかお答えがあるようですが… Minoru Kurebayashi さん wrote: > 違うディストリビューション、バージョン、メーカーで > 作成しても動くものなんでしょうか? Windows, Linux, *BSDを問わず、 ソースが同じでも、システム側の都合で、 動かないころは有ります。 Linuxの場合、distrubutionが乱立し、 それぞれのバージョンの違いが合わさるので、 問題が複雑の見えます。 問題は、kernel, lib, configuration fileの位置と書式です。 1. kernel: 1-1. Device Driver Device Driverを自作した場合は、 kernel versionが違うと、 distributionに関わらす、 普通、引っかかります。 Device Driverを書く力量があれば、 修正は容易です。 普通Device Driverは、 書かないで済むでしょう。 いや、済むようにしたほうが平和。 1-2. system call kernelの大幅な修正があったとき、 kernel-2.x.yのxが変わったときなど、 system callに修正が加わることがあります。 これは、Linuxだけではありません。 2. lib C アプリケーションが、dynamic linkする、 lib*.soのメジャーチェンジがあると、 動作しません。 これも、Linuxだけではありません。 WindowsでもDLLが合わなければ無理でしょう。 修正が面倒なら、static linkにすれば、 問題を回避できます。 ただ、サイズが大きくなるのと、 linkしたlibにbugがあった場合、 dynamicなら、libのupdateで済みますが、 static linkは再コンパイルを要します。 さらにstatic linkしたlibがLGPLでなく、 GPLの場合、アプリケーションに、 GPLが伝染します。これは、 GNUのlib全てについて言えます。 3. distrubution これは、Linux特有の問題です。 パッケージの管理法や、conf fileの位置が変わり、 kernelのversionやcompile optionが違います。 しかし大抵のアプリケーションは、 そうした違いを問題にするようなものではないはずです。 むしろ、1, 2で挙げた問題の影響が大きい。 組込システムを作るなら、 kernelの中身が分からない、いつ変わるかもしれない、 Windows XXをのぞき、 *BSD, Linuxなら、どのdistributionでも、 kernelは原則として自分で再compileし、 configuration fileは保存しておくべきです。 kernel compileは初心者の考えるような、 困難な作業ではありません。 gnuのアプリケーションは、 ちゃんとかかれたアプリケーションは、 *BSD, Linuxはどのdistributionでも ./configuration make で再構築可能です。 本来プログラムのコーディングはそうあるべきで、 良い手本はいくらでもあるのです。 しかし、autoconfをフルに使ったコーディングは、 それなりに、作成も試験も大変です。 システムにあまり関わらないアプリケーションは、 そこまでしなくても、再コンパイルで済むし、 static linkも悪いわけじゃない。 最新の、良いdistributionを選定するのが、 Linuxの場合、成功の要になるのです。 -- mac