Unixの世界では、“移植性”は異なるUnixバージョンに移植することを言ってい る。GNUプログラムにとって、この種の移植性は望ましいが、最も重要ではない。
GNUソフトウェアの主要な目的は、GNUカーネルの上で走り、GNU Cコンパイラで コンパイルされ、様々なcpu上で動くことだ。異なるcpu上のGNUシス テム間の多様性の量と種類は、今日のLinuxに基づくGNUシステムやBSDシステム 間の多様性と比較できる程度であろう。だから、絶対に必要な移植性の種類 はかなり限られている。
しかしたくさんのユーザがGNUソフトウェアをGNUでないUnixやUnix-likeシス テムで走らせている。だから、さまざまなUnix-likeシステムをサポートするこ とが望ましい。最も重要ではないけれど。
ほとんどのUnix-likeシステムへの移植性を得る一番簡単な方法はAutoconfを使 うことだ。あなたのプログラムがAutoconfが提供できる以上にホスト・プラット ホームに関する情報を知る必要があることはあまりない。単にそういう情報を必 要とするプログラムの大部分はすでに書かれているから。
準内部的データベース(例えば、ディレクトリ)のフォーマットを使わないように
しなさい。もっと高水準の方法(readdir
)があるときは。
MSDOS、Windows、Macintosh、VMS、MVSのような、Unixに似てないシステムにつ いて言うと、それらをサポートするのは普通しない方がいいぐらい大変な仕事だ。
計画されているGNUカーネルはまだ出来てないが、GNU Cライブラリのマニュアル を見ることで、それが提供するであろう機能がどれなのか分かる。GNUカーネル はMachに基づいているから、Machの機能も利用できるだろう。しかしながら、 Machの機能を使用すると、おそらくあなたのプログラムを今日デバッグする困難 に見舞われるだろう1。
[1] 訳注: 今日デバッグするってどういうこと? 原文: However, if you use Mach features, you'll probably have trouble debugging your program today.