Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール
UNIX USER 5月号、発売。Linux カーネル2.6実践編の第3回となる今回は、題して「/usr/include の謎」。意外と知られていない、/usr/include ディレクトリの全体像を本連載流に解説してみた。
簡単に言えば、/usr/include ディレクトリ内部には、大きく2種類のインクルードファイル群が存在する。ひとつは、glibc を代表とするライブラリー用のヘッダーファイル。そしてもうひとつは、/usr/include/asm, /usr/include/linux など CPU アーキテクチャや Linux カーネルに依存したヘッダーファイル達である。
前者のヘッダーファイルは GNU などのライブラリー作成者が提供するが、後者については Linux カーネルソースツリー内部に含まれる include ディレクトリの内容が、そのまま流用されている。
つまり、Maintainer が全く異なる訳だ。ここに Linux の悲劇があると言っても過言ではない。なぜ、これが「悲劇」なのか?その理由については本文をご参照ください。
この点、カーネルとライブラリーのソースツリーが一体化している BSD はさすがである。特にCライブラリーのソース構成が素晴らしい。内部のソースや man ファイルを読んでいると、BSD ハッカー達の責任感と良心がひしひしと伝わってくる。彼らにとって、ソースリストとは良質な文書なのである。
これに対して、Linux ソースツリーの中身は本当にお寒いばかりで、まるで「コードを書き散らした子供部屋」のようである。GNU 開発ツールや glibc のノウハウを学ぶためには確かに Linux が優れているが、時には美しい絵画や音楽を鑑賞するように BSD ソースツリーにも目を向けるべきだろう。何事も、心の中に良きリファレンスを持つことが大切である。