各ソフトウエアのコンパイルと導入


図4 コンパイルの順序
[画像のクリックで拡大表示]

 自分Linuxを構成する各ソフトウエアをコンパイルする際,依存関係があるため必ず決められた順序でコンパイルを実施しなければならない。各ソフトウエアをコンパイルする順序だが,図4のようになる。ここからの作業はかなりの時間を要するため,じっくり腰を据えて取り組んでいただきたい。

(1)glibcのコンパイルと導入
 glibcに関する文献には,カーネルをOSの頭脳,glibcをOSの心臓と表現するものがあり,glibcの重要さが述べられている。glibcは各種コマンドやソフトウエアを実行する際に必要かつ重要なライブラリ群である。このライブラリ群のおかげで一から面倒な定義をする必要がなくなり,ソフトウエア開発などにおいて重要な役目を果たす。

 このライブラリの使い方としては,実行時に呼び出す「ダイナミック・リンク」とコマンドやソフトウエアに直接組み込む「スタティック・リンク」の2種類がある。どのような違いがあるかなどは,次ページの「ダイナミック・リンクとスタティック・リンク」にまとめたのでお読みいただきたい。

 自分Linuxでは,ほとんどのコマンドやソフトウエアでダイナミック・リンクを利用する。そのため,このライブラリがないと各種コマンドが実行できなくなる。

 それでは,インストールしていこう。まずは,glibcとglibc用スレッド・ライブラリ「glibc-linuxthreads」のソース・アーカイブを展開する。

 続けて,作業ディレクトリ(ここでは「glibc-build-2.3.4」とした)を作成する。glibcにはさまざまなパラメータが用意されている。この作業ディレクトリを作成してその中で作業すれば,パラメータの定義などを間違えてコンパイルしてしまったとしても作業ディレクトリを削除するだけで済む。再度作業ディレクトリを作り,正しい定義をすれば何度もコンパイルできる。


図5 glibcを導入するための環境定義
--enable-add-onsオプションによりlinuxthreadsを追加し,--without-__threadオプションによりTLS(Thread Local Storage)を無効し,--prefixオプションに導入先のディレクトリを指定している。
[画像のクリックで拡大表示]

図6 作業ディレクトリ内を確認
glibcのコンパイルに必要なファイルやディレクトリが作成されていることを確認する。
[画像のクリックで拡大表示]

図7 glibcのコンパイルと導入
install_rootオプションではインストール先のルート・ディレクトリを指定する。これにより,/usr/local/src/origdev/libディレクトリ以下にglibcのライブラリが導入される。
[画像のクリックで拡大表示]

 glibcをコンパイルするには,まずglibc-2.3.4ディレクトリにあるconfigureコマンドを実行し,自分Linuxを作成するためのglibcの環境定義を完成させる(図5)。環境定義が完了すると作業ディレクトリ内に5つのファイルと1つのディレクトリが作成される(図6)。

 次に,makeコマンドを用いて,コンパイルを実行する*2図7)。glibcのコンパイルには非常に時間がかかる(ちなみに筆者の環境では約40分かかった)ので,一息入れよう。make installコマンドまで実行すると,/usr/local/src/origdevディレクトリ内にライブラリなどのファイル群が導入される。

 これ以降は,Linuxの基本になるコマンド群や,その他のライブラリを導入していく。コンパイルおよび導入の基本的な手順は次のようになる。

1.ソース・アーカイブの展開

2.configureコマンドによる環境定義

3.makeコマンドによるコンパイル

4.make installコマンドで導入

 以前にも述べたように,自分Linuxでは最低限必要なコマンドのみを導入する。あとは必要に応じて追加していただきたい。

(2)sysvinitのコンパイルと導入
 sysvinitは,システムの実行状態をいくつかのレベル(ラン・レベル)に分類し,それに応じたデーモンを動作させることでシステムを効率よく運用するためのコマンド群である。このラン・レベル変更時に特定のコマンドを起動や停止するためのプロセスを管理するコマンドやスクリプトを含んでいる。

 sysvinitのソース・アーカイブを展開し,コンパイルと導入を実施しよう。インストール先はROOT変数で指定する。

(3)ncursesのコンパイルと導入
 ncursesはコンソール端末の表現力を向上させるためのライブラリである。これを使用することにより,コンソール上で文字の色や太字などを表現できるようになる。

 ncursesのソース・アーカイブを展開し,コンパイルの準備をしよう。なお,これまでの本講座では「ncurses-5.4-1.tar.bz2」を用いることにしていたが,確認不足による問題が生じたため「ncurses-5.4.tar.gz」に変更する。


図8 ncursesのコンパイルと導入
--with-install-prefixオプションでは,インストール先のディレクトリを,--prefixオプションでは,さらにインストール先のディレクトリ配下のusrディレクトリに導入するように指定している。その他のオプションは,コンソールの設定にかかわるものであり,任意に設定していただきたい。
[画像のクリックで拡大表示]

図9 bashのコンパイルと導入
--exec-prefixオプションで導入先のディレクトリを,--prefixオプションでコンパイルしたバイナリ・ファイルの導入先を指定する。また,--with-cursesオプションによりncursesライブラリを使うようにする。
[画像のクリックで拡大表示]

 展開したら,図8のようにしてコンパイルし,導入する。パラメータが多いので間違えないように注意しよう。

(4)bashのコンパイルと導入
 bash(Bourne Again SHell)は皆さんご存知のLinuxの標準シェルだ。Bourneシェルを拡張したものであり,他のシェルで持つさまざまな機能も備えている便利なシェルである。今回は最新のバージョン3を導入する。

 図9のようにbashのソース・アーカイブを展開し,コンパイルして導入する。最後に,bashを自分Linuxの標準シェルにするため,

と実行し,bashを/usr/local/src/origdev/bin/shにリンクする。