[H8-ML(5233)] Re:Linuxのプログラムについて
From: Shigeru Makino <mac@xxxxxxx>
Date: 2004年12月24日(金)04時33分38秒
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

スレッド概略
[5218(R)](起点)
 └[5225(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]