このセクションではテストライブラリとして glibc 2 を導入することを取り 扱います。新しいライブラリをリンクするような追加パラメタを与えるまでは 既存のライブラリをリンクするようにコンパイルします。 パスがかなり少しのファイル内に集められるようにみえるので、ソースから ライブラリを導入する必要があります。
64 MB のメモリのある i586@133 では、すべてのライブラリとアドオンを コンパイルするには約 3 時間かかります。i686@200 では、1 時間 30 分 です。
ソースをコンパイルするにはアーカイブからソースを取り出す必要がありま す。最良の方法は次の通り。
tar xzf glibc-2.0.5.tar.gz
cd glibc-2.0.5
cat ../glibc-2.0.5-2.0.5c.diff.gz | gzip -d | patch -p0
tar xzf ../glibc-linuxthreads-2.0.5.tar.gz
tar xzf ../glibc-crypt-2.0.5.tar.gz
tar xzf ../glibc-localedata-2.0.5.tar.gz
ここでは glibc-2.0.5 ディレクトリ 内の linuxthreads, crypt, と
localedata ディレクトリにこれらのアドオンを構成しています。
glibc-2.0.5 ディレクトリ 内に compile という名称のディレクトリを作成 して、そこに移動しましょう。すべての作業をまっさらなこのディレクトリ で行います。(開発者は 'make clean' を完璧にする必要は無いと思います。)
mkdir compile
cd compile
そして ../configure を実行しましょう。アドオンパッケージを使用するには、
--enable-add-ons=linuxthreads,crypt,localedata のように
--enable-add-ons を指定する必要があります。
また、導入先のディレクトリを指定する必要があります。
/usr/i486-linuxglibc2 が良い選択でしょう。configure コマンドを次の
ようにしましょう。
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
コンパイルと検証は次を実行しましょう。
make
make check
そして 'make check' が成功したらライブラリを導入しましょう。
make install
ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
プログラムは一旦、固定した場所にあるリンクされたライブラリで、安定な
バージョンが公開されたら主たる C ライブラリとして glibc に容易に更新
し /lib 内のリンクを使用します。
ldconfig -v
/usr/lib/gcc-lib を導入作業の最後の段階で更新するので、gcc は新しい ライブラリをどのように使用するか知っています。先ず、既存の構成を複写 する必要があります。どの構成が最新なのか調べるには gcc の -v オプション を使って :
% gcc -v
Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
そして、このディレクトリにある 'specs' ファイルを編集しましょう。
このファイルの /lib/ld-linux.so.1 を /lib/ld-linux.so.2 に変更しま
しょう。また、
glibc がプロファイルを行う時に gmon ライブラリを使用しないように
%{...:-lgmon}
という語句をファイル内から削除する必要があります。
specs ファイルの例題は
specs ファイルの例
セクションにあります。
新しいインクルードディレクトリ内に他のインクルードディレクトリのリンク を作成する必要があります。:
cd /usr/i486-linuxglibc2/include
ln -s /usr/src/linux/include/linux
ln -s /usr/src/linux/include/asm
ln -s /usr/X11R6/include/X11
ncurses のような他のライブラリがある場合はこのディレクトリに追加する
必要があります。/usr/include からファイルをコピーするかリンクを張り
しましょう。(いくつかのライブラリは glibc2 で動作するために
リコンパイルする必要があります。この場合は、パッケージをコンパイル
して /usr/i486-linuxglibc2 に導入しましょう。)
導入のテストを行うには、glibc.c ファイルに次のプログラムを作成しましょう:
#include <stdio.h>
main()
{
printf("hello world!\n");
}
そして "-b <基底導入ディレクトリ> -nostdinc -I<インストールディレクトリ>/include -I/usr/lib/gcc-lib/<新システムディレクトリ>/<gcc のバージョン>/include" を付けてコンパイルしましょう:
% gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
古い libc でなく glibc2 とリンクするプログラムを ldd で検証します。:
% ldd glibc
libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
コンパイルして、リンクを確認して、実行して、
"hello world!" が出力されれば導入は成功です。