本パッケージの詳細は 6.13.2.「Binutils の構成」を参照してください。
Binutils パッケージは、リンカーやアセンブラーなどのようにオブジェクトファイルを取り扱うツール類を提供します。
前の節に戻って再度説明をよく読み、重要事項として説明している内容をよく理解しておいてください。 そうすればこの後の無用なトラブルを減らすことができるはずです。
Binutils は一番最初にビルドするパッケージです。 ここでビルドされるリンカーやアセンブラーを使って、Glibc や GCC のさまざまな機能が利用できるかどうかを判別することになります。
コンパイラーの最適化を行った場合にビルドに失敗するため、これを修正するパッチを適用します。
patch -Np1 -i ../binutils-2.22-build_fix-1.patch
Binutils のドキュメントでは Binutils をビルドする際に、ソースディレクトリではなく、ビルド専用のディレクトリを使ってビルドすることを推奨しています。
mkdir -v ../binutils-build cd ../binutils-build
本節以降で SBU値を示していきます。 これを活用していくなら、本パッケージの configure
から初めのインストールまでの処理時間を計測しましょう。 具体的には処理コマンドを time で囲んで time { ./configure ... && make
&& make install; }
と入力すれば実現できます。
概算ビルド時間と必要ディスク容量は、この第5章ではテストスイートに関わる時間や容量は含めないことにします。
Binutils をコンパイルするための準備をします。:
../binutils-2.22/configure \ --prefix=/tools \ --with-sysroot=$LFS \ --with-lib-path=/tools/lib \ --target=$LFS_TGT \ --disable-nls \ --disable-werror
configure オプションの意味
--prefix=/tools
configure スクリプトに対して Binutils プログラムを /tools
ディレクトリ以下にインストールすることを指示します。
--with-sysroot=$LFS
クロスコンパイル時に、ターゲットとして必要となるシステムライブラリを $LFS より探し出すことを指示します。
--with-lib-path=/tools/lib
リンカーが用いるべきライブラリパスを指定します。
--target=$LFS_TGT
変数 LFS_TGT
に設定しているマシン名は
config.guess
スクリプトが返すものとは微妙に異なります。 そこでこのオプションは、Binutils
のビルドにあたってクロスリンカーをビルドするように configure スクリプトに指示するものです。
--disable-nls
一時的なツール構築にあたっては i18n 国際化は行わないことを指示します。
--disable-werror
ホストのコンパイラーが警告を発した場合に、ビルドが中断することがないようにします。
パッケージをコンパイルします。
make
コンパイルが終了しました。通常ならここでテストスイートを実行します。 しかしシステム構築初期のこの段階ではテストスイートのフレームワーク (Tcl, Expect, DejaGNU) が準備できていません。 さらにこの時点で生成されるプログラムは、すぐに次の生成作業によって置き換えられますから、この時点でテストを実行することはあまり意味がありません。
x86_64 にて作業をしている場合は、ツールチェーンの切り分けを適切に行うためにシンボリックリンクを作成します。
case $(uname -m) in x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; esac
パッケージをインストールします。
make install
本パッケージの詳細は 6.13.2.「Binutils の構成」を参照してください。