トップ > 最小システムの構築 > 一時的な開発ツールのビルド(後半) >
Binutils

  

Binutilsのビルド

Binutilsは、オブジェクトファイルを扱うためのコマンド群です。 アーカイブの管理を行うための ar コマンド、リンクを行うための ld コマンド、アセンブリ言語を翻訳するための as コマンドなどが含まれます。

コンパイル・リンクに使用する開発ツールは/tools以下のもの、つまり、前半の作業でビルド・インストールしたクロス開発用の実行ファイルです。 これにより、Fedoraに依存しないBinutilsをビルド・インストールすることができます

ソースファイルの展開

ソースファイルを展開します。


cd $MYLINUX/sources
tar xvf binutils-2.25.tar.bz2
cd binutils-2.25

 

ビルド用ディレクトリの準備

ビルド用ディレクトリを準備します。


mkdir -vp ../binutils-build
cd ../binutils-build

 
  
Binutilsでは、ソースファイルが置かれているディレクトリでのビルドは推奨されていません。 別にビルド用のディレクトリを用意し、そこでビルドを行うことが推奨されています。

configure

configureを実行します。


CC=$MYLINUX_TARGET-gcc AR=$MYLINUX_TARGET-ar RANLIB=$MYLINUX_TARGET-ranlib ../binutils-2.25/configure \
  --prefix=/tools \
  --disable-nls \
  --with-sysroot \
  --with-lib-path=/tools/lib > ../../logs/configurelog.binutils 2>&1

 
  
1回目のBinutilsのビルドでは、ターゲットプラットフォーム(--target=)を指定しましたが、今回は指定しません。
  
configureコマンドの前に、CC=$MYLINUX_TARGET-gcc AR=$MYLINUX_TARGET-ar RANLIB=$MYLINUX_TARGET-ranlibと記述しています。
  
上記の記述は、/tools/binディレクトリにある i686-mylinux-linux-gnu-gcc、i686-mylinux-linux-gnu-ar、i686-mylinux-linux-gnu-ranlibを使用するように設定するための記述です。
  
それらの実行ファイルは、Binutilsの1回目のビルドとGCCの1回目のビルドでインストールされた実行ファイル、つまり、クロス開発用の開発ツールです。

configureが終了したら、ログファイルに出力された内容を参照し、正常に終了したことを確認します。


cat ../../logs/configurelog.binutils

 

ビルド

ビルドを実行します。


make

 

ビルドが終了したら、画面に出力された内容を参照し、正常に終了したことを確認します。

インストール

インストールを行います。


make install

 

インストールが終了したら、画面に出力された内容を参照し、正常に終了したことを確認します。

インストール後の追加作業

インストール後の追加作業を行います。 ld-new という名称のリンカを生成します。


cd ld
make clean
make LIB_PATH=/lib:/usr/lib
cp -va ld-new /tools/bin
cd ..

 

なお、ld-newリンカは、一時的な開発ツールの構築中は使用しません。 一時的な開発ツールの構築が完了した時点でld-new から ld に改名し、利用されるようにします。

  
ld-newは、本来はブートストラップテスト用のリンカです。 ブートストラップテストとは、自分で自分を処理し、その結果を比較するテストのことです。
  
具体的には、まず、ld-newリンカ で ld1リンカ を生成します。 次に、ld1リンカ で ld2リンカ を生成します。 最後にld1リンカとld2リンカを比較し、一致することを確認します。 なお、この記事ではブートストラップテストは行いません。
  
LIB_PATH=/lib:/usr/libという記述は、リンカが探すライブラリのパスを指定するためのものです。 ld-new の実行時に、/lib および /usr/lib を参照させるために指定しています。

後始末

ディスクを圧迫しないよう、ビルド用のディレクトリを削除します。


cd ..
rm -fr binutils-2.25
rm -fr binutils-build

 
  
  

まとめ

Binutilsは、オブジェクトファイルを扱うためのコマンド群です。

メニュー