Glibc-2.3.2 のインストール

推定構築時間:           11.8 SBU
推定必要ディスクスペース:  800 MB

Glibc の内容

Glibc は open, malloc, printf, 等といったシステムコールや基本的な関数を提供するライブラリです。この C ライブラリは動的リンクされた全てのプログラムに使われます。

インストールされるプログラム: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump 及び zic

インストールされるライブラリ: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so 及び libutil.[a,so]

Glibc インストール依存性

Glibc は以下のパッケージに依存します: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Glibc のインストール

Glibcのインストールを始める前に、通常すべてのソースを解凍しているディレクトリではなく、glibc-2.3.2 という名前のディレクトリにディレクトリを変更して( cd して)そこで Glibc-linuxthread を解凍しなければいけません。

このパッケージはデフォルト最適化フラグ( -march と -mcpu オプションを含む)を変更するとおかしなふるまいをすると知られています。 ですから、たとえば CFLAGS や CXXFLAGS のような、デフォルトの最適化を書きかえるような何かの環境変数を定義したなら、Glibc を構築する時に、その設定を解除するか、修正するようお勧めします。

基本的には、本書で示されるやり方以外の方法で Glibc をコンパイルすると、お使いのシステムの安定性を危険に晒すことになります。

害のないメッセージですが、Glibc のインストールの段階で /tools/etc/ld.so.conf がないのに不平を言うでしょう。 この煩わしいささいな警告を修正します。

mkdir /tools/etc
touch /tools/etc/ld.so.conf

また、Glibc は GCC 3.3.1 でコンパイルするとやっかいな問題を持ちます。これを修正するために次のパッチをあてましょう。

patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch

Glibc の文章は、コンパイルをソースディレクトリとは別の構築専用ディレクトリで行なうことを勧めています。

mkdir ../glibc-build
cd ../glibc-build

次に、Glibc のインストールの準備をします。

../glibc-2.3.2/configure --prefix=/tools \
    --disable-profile --enable-add-ons \
    --with-headers=/tools/include \
    --with-binutils=/tools/bin \
    --without-gd

コンフィグオプションの意味

この段階で以下の警告を見るかもしれません。

configure: WARNING:
*** These auxiliary programs are missing or incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.
(参考訳:
警告:
*** これらの予備プログラムは存在しないか、互換性のないバージョンです: msgfmt
*** いくつかの機能が無効になります。
*** 必要なバージョンを調べるのに INSTALL ファイルを見てください。)

msgfmt プログラムが存在しない、または互換性がないことは通常無害ですが、しかしテストスイートを実行しているときにときどき問題を引き起こすと思われています。

パッケージをコンパイルします。

make

テストスイーツを実行します。

make check

Glibc のテストスイートは、お使いのホストシステムのある機能、とりわけカーネルに強く依存します。 加えて、この章でのあるテストは、ホストシステム上に存在するツール、あるいは環境的な問題に影響を与えます。 もちろん、これらは第 6 章の chroot 環境の中で Glibc のテストスイートを実行するときには問題とはなりません。 一般的に、Glibc テストスイートはいつもテストに通過するものと予想されます。しかし、先に述べたように、ある環境ではいくつかの失敗が避けがたいものです。私達が把握している、最もよくある問題を列挙しておきます。

要するに、この章で Glibc のテストスイーツの失敗を目にしてもそんなに心配しなくて大丈夫です。 第 6 章での Glibc が最終的に使うものとなるので、本当にテストを通過するのを見たいのはそちらの方になります。 しかし憶えておいて下さい、第 6 章でもいくつかの失敗、たとえば math テストなどでの失敗は同様に発生するのです。 失敗を経験したら、それをメモして、再び make check を実行して続けましょう。 テストスイートはどこで終ったかを調べて、それを続けます。この止ったり、動いたりの連続は make -k check を実行することで避けることができます。 しかしそうするのなら、あとで追跡して失敗の総数を調べられるように出力のログを取ることを確認して下さい。

それではパッケージをインストールします。

make install

さまざまな国や文化では、理解しあう方法にいろいろな約束事があります。 これらの習慣の範囲は、日付と時間の表記のようなとても単純なものから、話しことばのような非常に複雑なものにまで渡ります。 GNU の "国際化" されたプログラムはロケールという手段を使っています。それでは Glibc ロケールをインストールします。

make localedata/install-locales

このコマンドを実行する代わりに、必要なものまたは望むロケールのみをインストールすることも可能です。 これは localedef コマンドを使うことで行います。これについての情報は glibc-2.3.2 のソースファイルの中にある INSTALL というファイルのにあります。 しかし、この先のパッケージのテストを通過するために重要となる沢山のロケールがあります。特に、GCCからの libstdc++ テストがそうです。 以下の説明は、上の install-locales ターゲットを用いない場合、テストをうまく実行するために必要な最小限のロケールをインストールするための手引です。

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP