ページ

Clip to Evernote ←このページをノートに保存する
Add to Google ←このブログをGoogleに追加

2010年7月25日日曜日

Linuxカーネルとglibcの微妙な関係

Linuxに限らず、多くのUNIXライクなOSでは、C言語用の標準ライブラリとして、libcというライブラリが準備されている。そしてGNU版libcをglibcと呼んでいる。
UNIXがC言語を用いて書かれた最初のOSだということはよく知られている。逆に、UNIXを書くためにC言語が作られたと表現してもいいかもしれない。したがって、UNIXとC言語は切っても切れない関係にあって、ほとんどのUNIXおよびUNIXライクなOSは、カーネルのバージョンに合ったlibcを標準装備している。そして、全てのソフトウェアをオープンにすべく活動しているGNUプロジェクトから、それらのOSにもglibcが提供されている。

しかし、もともとリーナス・トーバルズのプライベートなプロジェクトの中で開発されたLinuxは独自のlibcを持たない。リーナスが中心となって開発したのはあくまでも、Linuxカーネルそのものであって、UNIXライクなシステムとして、それ以外の必要なもののほとんどは既に存在したプロジェクトの成果物を応用したというわけだ。
従って、Linuxカーネルとglibcは切っても切れない関係になっている。Linuxカーネルの上では、多くのGNUソフトウェアが動いているから、glibcがLinuxカーネルを積極的にサポートすることで、双方のメリットは大きい。
glibcはもはやLinux専用のlibcとなりつつあり、Linuxカーネルの新機能をいち早く取り入れバージョンアップを続けている。したがって、Linuxの最新版カーネルで採用された機能を使いたければ、その機能に対応したglibcを使う必要がある。
既存のディストリビューションを使用している場合は特に問題ないが、組み込み機器などに、独自にコンパイルしたカーネルやライブラリをインストールする場合、注意が必要である。
例えば、Fedora13の場合、リリース時のカーネルのバージョンは"2.6.33.5-112.fc13.i686.PAE"。そして、glibcのバージョンは既に"2.12"であったが、未だにGNUのftpサーバ(http://ftp.gnu.org/gnu/glibc/)からダウンロードできる最新版は"2.11"である。glibc-2.12は"http://sourceware.org/git/?p=glibc.git;a=summary"というリポジトリからfedora/glibc-2.12.xxとしてリリースされている。
つまり、多くのUNIXライクなOSに向けたGNU公式の最新リリースは2.11だが、本当の最新版はLinuxカーネル対応が先行して行われている2.12だというわけだ。従って、ディストリビューションを使わず、独自にLinuxシステムをインストールしている場合、最新版LinuxカーネルをLinuxカーネルの公式サイト(kernel.org)からダウンロードしてきても、それに対応したglibcはglibcの公式サイト(http://www.gnu.org/software/libc/)には無く、開発中のリポジトリ(http://sourceware.org/git/?p=glibc.git;a=summary)を探さなくてはならないのだ。
この辺にリーナス・トーバルズ率いるLinuxカーネル開発陣と、リチャード・ストールマン率いるGNUプロジェクト陣営の微妙な関係が見え隠れしている。
我々は、とにかく無償で使わせていただいている立場であるから、お互い、できるだけ良い関係を続けてくれるよう、只々祈るばかりである。

0 件のコメント:

コメントを投稿