5.2. Binutils-2.43.1 - 1回め

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

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

5.2.1. クロスコンパイル版 Binutils のインストール

[注記]

注記

全般的なコンパイル手順 と書かれた節に戻って再度説明をよく読み、重要事項として説明している内容をよく理解しておいてください。 そうすればこの後の無用なトラブルを減らすことができるはずです。

Binutils は一番最初にビルドするパッケージです。 ここでビルドされるリンカーやアセンブラーを使って、Glibc や GCC のさまざまな機能が利用できるかどうかを判別することになります。

Binutils のドキュメントでは Binutils をビルドする際に、ビルド専用のディレクトリを使ってビルドすることを推奨しています。

mkdir -v build
cd       build
[注記]

注記

本節以降で SBU値を示していきます。 これを活用していくなら、本パッケージの configure から初めのインストールまでの処理時間を計測しましょう。 具体的には処理コマンドを time で囲んで time { ../configure ... && make && make install; } と入力すれば実現できます。

Binutils をコンパイルするための準備をします。:

../configure --prefix=$LFS/tools \
             --with-sysroot=$LFS \
             --target=$LFS_TGT   \
             --disable-nls       \
             --enable-gprofng=no \
             --disable-werror    \
             --enable-new-dtags  \
             --enable-default-hash-style=gnu

configure オプションの意味

--prefix=$LFS/tools

configure スクリプトに対して Binutils プログラムを $LFS/tools ディレクトリ以下にインストールすることを指示します。

--with-sysroot=$LFS

クロスコンパイル時に、ターゲットとして必要となるシステムライブラリを $LFS より探し出すことを指示します。

--target=$LFS_TGT

変数 LFS_TGT に設定しているマシン名は config.guess スクリプトが返すものとは微妙に異なります。 そこでこのオプションは、binutils のビルドにあたってクロスリンカーをビルドするように configure スクリプトに指示するものです。

--disable-nls

一時的なツール構築にあたっては i18n 国際化は行わないことを指示します。

--enable-gprofng=no

これは gprofng のビルドを無効にします。 gprofng は一時的ツールにおいては不要であるからです。

--disable-werror

ホストのコンパイラーが警告を発した場合に、ビルドが中断することがないようにします。

--enable-new-dtags

これは実行ファイルや共有ライブラリに埋め込むライブラリ検索パスとしてrunpathを用いることをリンカーに対して指示します。 従来のrpathタグは用いません。 こうすると、動的リンクされた実行ファイルのデバッグが容易になり、いくつかのパッケージにおけるテストスイートにおいて発生する潜在的な問題を解決できるものとなります。

--enable-default-hash-style=gnu

リンカーにおいては、共有ライブラリや動的リンク実行ファイルのハッシュテーブルに関して、GNU スタイルのものと旧来の ELF 形式のものの双方を生成することがデフォルトとなっています。 ハッシュテーブルは、動的リンカーがシンボル検索を実現するためのものです。 LFS における動的リンカー(Glibc パッケージから提供されるもの)は、GNU スタイルのハッシュを常に用いることにしており、シンボル検索をより早くなるようにしています。 したがって旧来の ELF ハッシュテーブルは完全に無用です。 本指定はリンカーに対して、デフォルトでは GNU スタイルのハッシュテーブルしか生成しないように指示します。 こうすることで、パッケージビルドの際に、旧来の ELF ハッシュテーブルを生成する不要な時間、およびそれを収容するディスクスペースを軽減できます。

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

make

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

make install

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