5.7. Glibc-2.14.1

Glibc パッケージは主要な C ライブラリを提供します。 このライブラリは基本的な処理ルーチンを含むもので、メモリ割り当て、ディレクトリ走査、ファイルのオープン、クローズや入出力、文字列操作、パターンマッチング、算術処理、等々があります。

概算ビルド時間: 5.5 SBU
必要ディスク容量: 501 MB

5.7.1. Glibc のインストール

Glibc が GCC-4.6.2 に対してビルドできなくなるバグを修正します。

patch -Np1 -i ../glibc-2.14.1-gcc_fix-1.patch

またこの時点での構築環境が不十分であるために処理に失敗することから、ヘッダーチェックを修正します。

patch -Np1 -i ../glibc-2.14.1-cpuid-1.patch

Glibc のドキュメントでは、ソースディレクトリ以外の専用のビルドディレクトリを作成することが推奨されています。

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

Glibc は i386 をサポートしなくなりました。 開発者によると x86 マシンに対してはコンパイラーフラグとして -march=i486 を指定する必要があります。 これを実際に指定する方法はいくつかあります。 もっとも試してみれば分かりますが、ビルド時の変数「CFLAGS」にて設定しておくのが一番です。 Glibc の内部的なビルドシステムが利用する CFLAGS を上書き設定するのとは別に configparms ファイルという特別なファイルを使って CFLAGS に対して追加設定を行うこともできます。 -mtune=native というフラグも必要で -march を設定した際に変更される -mtune の値を適切にリセットします。

case `uname -m` in
  i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
esac

次に Glibc をコンパイルするための準備をします。

../glibc-2.14.1/configure --prefix=/tools \
    --host=$LFS_TGT --build=$(../glibc-2.14.1/scripts/config.guess) \
    --disable-profile --enable-add-ons \
    --enable-kernel=2.6.25 --with-headers=/tools/include \
    libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes

configure オプションの意味:

--host=$LFS_TGT, --build=$(../glibc-2.14.1/scripts/config.guess)

このようなオプションを組み合わせることで /tools ディレクトリにあるクロスコンパイラー、クロスリンカーを使って Glibc がクロスコンパイルされるようになります。

--disable-profile

プロファイル情報を含めずにライブラリをビルドすることを指示します。 一時的なツールにてプロファイル情報が必要な場合は、このオプションを取り除いてください。

--enable-add-ons

スレッド処理のライブラリとして NPTL アドオンを利用することを指示します。

--enable-kernel=2.6.25

Linux カーネル 2.6.25 以上のサポートを行うよう指示します。 これ以前のカーネルは利用することができません。

--with-headers=/tools/include

これまでに tools ディレクトリにインストールしたヘッダーファイルを用いて Glibc をビルドすることを指示します。 こうすればカーネルにどのような機能があるか、どのようにして処理効率化を図れるかなどの情報を Glibc が得られることになります。

libc_cv_forced_unwind=yes

5.4.「Binutils-2.22 - 1回め」 においてインストールしたリンカーは、クロスコンパイルにより生成したものです。 これは Glibc をインストールするまでは使えません。 これはつまり force-unwind サポートに対するテストは失敗することを意味します。 正しく動作するリンカーに依存するためです。 libc_cv_forced_unwind=yes の変数設定は、configure スクリプトに対してテストを実行しなくても force-unwind サポート機能を利用可能とすることを指示します。

libc_cv_c_cleanup=yes

上と同様に configure スクリプトに対して libc_cv_c_cleanup=yes を指示します。 これによりテストが省略され、C のクリーンアップハンドリング (cleanup handling) のサポートを指定します。

ビルド中には以下のようなメッセージが出力されるかもしれません。

configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

msgfmt プログラムがない場合 (missing) や互換性がない場合 (incompatible) でも特に問題はありません。 msgfmt プログラムは Gettext パッケージが提供するもので、ホストシステムに含まれているかもしれません。

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

make

このパッケージにテストスイートは存在しますが、ここで実行することはできません。 この時点ではまだ C++ コンパイラーを構築していないためです。

[注記]

注記

テストスイートを正しく実行するためには、さらにロケールデータも必要になります。 ロケールデータは、システム内の各種ユーティリティが、日付、時刻、通貨などの情報を利用したり出力したりするために用いられるものです。 テストスイートの実行は不要と説明していることから、これに従って実行しない場合はロケールデータをここでインストールする必要はありません。 適切なロケールデータは次章にてインストールします。 それでもここでインストールするなら 6.9.「Glibc-2.14.1」に示される手順に従ってください。

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

make install

本パッケージの詳細は 6.9.4.「Glibc の構成」を参照してください。