エルドラド カジノ

5.4. Binutils-2.22 - 1回め

Binutils パッケージは、リンカーやアセンブラーなどのようにオブジェクトファイルを取り扱うツール類を提供します。

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

5.4.1. クロスコンパイル版 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 の構成」を参照してください。