5.9. Binutils-2.34 - 2回め

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

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

5.9.1. Binutils のインストール

ビルドのためのディレクトリを再び生成します。

mkdir -v build
cd       build

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

CC=$LFS_TGT-gcc                \
AR=$LFS_TGT-ar                 \
RANLIB=$LFS_TGT-ranlib         \
../configure                   \
    --prefix=/tools            \
    --disable-nls              \
    --disable-werror           \
    --with-lib-path=/tools/lib \
    --with-sysroot

configure オプションの意味:

CC=$LFS_TGT-gcc AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib

Binutils をネイティブにビルドすることが目的なので、ホストシステムに存在しているクロスコンパイラーや関連ツールは使わず、ビルドしているシステム内のものを用いるように指定します。

--with-lib-path=/tools/lib

configure スクリプトに対して Binutils のコンパイル中でのライブラリパスを指定します。 リンカーに対して /tools/lib ディレクトリを指定するものです。 こうすることでリンカーがホスト上のライブラリを検索しないようにします。

--with-sysroot

これはデフォルトの(存在していない)sysroot ディレクトリ /tools/$LFS_TGT/sys-root を定義するものです。 これは、リンカーのコマンドライン上に指定された共有オブジェクトに対し、そこから必要とされる共有オブジェクトを見つけ出せるようになります。 共有オブジェクトは <sysroot>/etc/ld.so.conf に設定されたディレクトリ内から検索され、 検索に失敗した場合はリンカーの検索パスが検索されます。 この動きは合理的なものです。 このスイッチが仮に設定されていなかったら、ホスト上の /etc/ld.so.conf が用いられます。 つまりホスト上のライブラリにリンクされるプログラムが出てくることとなり、避けなければならないことです。

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

make

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

make install

次章で行う再調整の作業に向けてリンカーを準備します。

make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin

make パラメーターの意味:

-C ld clean

サブディレクトリ ld にコンパイル生成されたプログラムをすべて削除します。

-C ld LIB_PATH=/usr/lib:/lib

サブディレクトリ ld の中に生成されるべきプログラムを再生成します。 Makefile ファイル内の変数 LIB_PATH をコマンドラインから与えることで、一時的なツール類の設定を上書き指定し、適切なパスを指示します。 この変数の設定はリンカーに対するデフォルトの検索パスを指定するものであり、次章に向けた準備となります。

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