前のページ 次のページ 目次

4. テストライブラリとして導入

このセクションではテストライブラリとして glibc 2 を導入することを取り 扱います。新しいライブラリをリンクするような追加パラメタを与えるまでは 既存のライブラリをリンクするようにコンパイルします。 パスがかなり少しのファイル内に集められるようにみえるので、ソースから ライブラリを導入する必要があります。

4.1 コンパイルと導入

必要条件

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
 

4.2 ダイナミックローダの更新

  1. 新しい ld.so から /lib/ld-linux.so.2 へリンクを作成しましょう:
     ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
     
    
    プログラムは一旦、固定した場所にあるリンクされたライブラリで、安定な バージョンが公開されたら主たる C ライブラリとして glibc に容易に更新 し /lib 内のリンクを使用します。
  2. /etc/ld.so.conf を編集しましょう。新しいライブラリのパスを ファイルの最後に上記の例では /usr/i486-linuxglibc2/lib のように <prefix>/lib を追加する必要があります。/etc/ld.so.conf を 変更したら、次を実行しましょう。
     ldconfig -v
     
    

4.3 gcc 用の構成

/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 ファイルの例 セクションにあります。

4.4 ヘッダファイルのリンクの更新

新しいインクルードディレクトリ内に他のインクルードディレクトリのリンク を作成する必要があります。:

 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 に導入しましょう。)

4.5 導入のテスト

導入のテストを行うには、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!" が出力されれば導入は成功です。


前のページ 次のページ 目次