本パッケージの詳細は 6.9.3.「Glibc の構成」を参照してください。
Glibc パッケージは主要な C ライブラリを提供します。 このライブラリは基本的な処理ルーチンを含むもので、メモリ割り当て、ディレクトリ走査、ファイルのオープン、クローズや入出力、文字列操作、パターンマッチング、算術処理、等々があります。
Glibc のドキュメントでは、専用のビルドディレクトリを作成することが推奨されています。
mkdir -v build cd build
次に Glibc をコンパイルするための準備をします。
../configure \ --prefix=/tools \ --host=$LFS_TGT \ --build=$(../scripts/config.guess) \ --enable-kernel=3.2 \ --with-headers=/tools/include
configure オプションの意味:
--host=$LFS_TGT,
--build=$(../scripts/config.guess)
このようなオプションを組み合わせることで /tools
ディレクトリにあるクロスコンパイラー、クロスリンカーを使って Glibc がクロスコンパイルされるようになります。
--enable-kernel=3.2
Linux カーネル 3.2 以上のサポートを行うよう指示します。 これ以前のカーネルは利用することができません。
--with-headers=/tools/include
これまでに tools ディレクトリにインストールしたヘッダーファイルを用いて Glibc をビルドすることを指示します。 こうすればカーネルにどのような機能があるか、どのようにして処理効率化を図れるかなどの情報を Glibc が得られることになります。
ビルド中には以下のようなメッセージが出力されるかもしれません。
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 パッケージが提供するもので、ホストシステムに含まれているかもしれません。
本パッケージは "並行ビルド (parallel make)" を行うとビルドに失敗するとの報告例があります。 もしビルドに失敗した場合は make コマンドに "-j1" オプションをつけて再ビルドしてください。
パッケージをコンパイルします。
make
パッケージをインストールします。
make install
この時点で以下を必ず実施します。 新しいツールチェーンの基本的な機能 (コンパイルやリンク) が正常に処理されるかどうかを確認することです。 健全性のチェック (sanity check) を行うものであり、以下のコマンドを実行します。
echo 'int main(){}' > dummy.c $LFS_TGT-gcc dummy.c readelf -l a.out | grep ': /tools'
すべてが正常に処理され、エラーが発生しなければ、最終のコマンドの実行結果として以下が出力されるはずです。
[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
インタープリター名は 32 ビットマシンの場合 /tools/lib/ld-linux.so.2
となります。
出力結果が上とは異なったり、あるいは何も出力されなかったりした場合は、どこかに不備があります。 どこに問題があるのか調査、再試行を行って解消してください。 解決せずにこの先に進まないでください。
すべてが完了したら、テストファイルを削除します。
rm -v dummy.c a.out
次々節にてビルドする Binutils では、ツールチェーンが正しく構築できたかどうかを再度チェックすることになります。 Binutils のビルドに失敗したとしたら、それ以前にインストールしてきた Binutils, GCC, Glibc のいずれかにてビルドがうまくできていないことを意味します。
本パッケージの詳細は 6.9.3.「Glibc の構成」を参照してください。