推定構築時間: 1.0 SBU 推定必要ディスクスペース: 194 MB |
Binutils はオブジェクトファイルとアーカイブで働くリンカ、アセンブラ、その他のツールを含むソフトウェア開発ツールの集まりです。
インストールされるプログラム: addr2line, ar, as, c++filt,gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings 及び strip
インストールされるライブラリ: libiberty.a, libbfd.[a,so] andlibopcodes.[a,so]
Binutils は以下のパッケージに依存します: Bash, Coreutils, Diffutils, GCC, Gettext,Glibc, Grep, Make, Perl, Sed, Texinfo.
Glibc と GCC の二つは、それらのどの機能を有効にするかを決定するため、利用できるリンカとアセンブラについてさまざまなテストを行うので、Binutils が最初にコンパイルするパッケージであるのは重要なことです。
Note: Binutils が重要な toolchain パッケージであっても、初期段階ではテストスイートを実行するつもりはありません。まず、テストスイートのひとそろいはまだ本来の位置に置かれていませんし、二つ目の理由は、第 1 段階でのプログラムはすぐにその第 2 段階インストールで上書きされてしまうからです。
このパッケージはデフォルト最適化フラグ( -march と -mcpu オプションを含む)を変更するとおかしなふるまいをすると知られています。 ですから、たとえば CFLAGS や CXXFLAGS のような、デフォルトの最適化を書きかえるような何かの環境変数を定義したなら、Binutils を構築する時に、その設定を解除するか、修正するようお勧めします。
Binutils の文章は、ソースディレクトリとは別の構築専用ディレクトリでコンパイルするよう勧めています。
mkdir ../binutils-build cd ../binutils-build |
Note: 本書の最後に、少しでも役立つようにと一覧にした SBU の値を使いたいなら、このパッケージを構築するのにかかる時間を測る必要があります。 これを簡単に行うには、次のようにすることができます。 time {./configure ... && ...&& ...&& make install;}
それでは コンパイルのために Binutils を準備しましょう。
../binutils-2.14/configure \ --prefix=/tools --disable-nls |
設定オプションの意味
--prefix=/tools: これはコンフィグスクリプトに Binutils プログラムを /tools ディレクトリにインストールするように指示します。
--disable-nls: これは国際化(この言葉はよく i18n と省略されます)を無効します。 静的プログラムにはこれは不用で、また nls は静的リンクを行なう時によく問題を引き起こします。
パッケージのコンパイルを続行します。
make configure-host make LDFLAGS="-all-static" |
make のパラメータの意味
configure-host: このオプションは、ただちにすべてのサブディレクトリ郡の設定を強制的に作成します。 静的リンクされた構築はこれなしでは失敗します。ですから、問題に対処するためこのオプションを使います。
LDFLAGS="-all-static": これはリンカにすべての Binutils プログラムが静的にリンクされるべきであると伝えます。 しかし率直に言えば、"-all-static" は初めに libtool プログラムに渡され、それからそれがリンカに "-static" を渡します。
パッケージをインストールします。
make install |
それでは Glibc の "閉じ込め" のためにリンカを用意します。
make -C ld clean make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib |
make のパラメータの意味
-C ld clean: これは make プログラムに ld サブディレクトリの中だけにあるコンパイルされたファイルをすべて削除するように伝えます。
-C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib: これは ld サブディレクトリの中にあるすべてを再構築するオプションです。 コマンドラインで LIB_PATH makefile 変数を指定すると、デフォルトの値を上書きし、暫定的にツールを置いてある場所に変更します。 この変数の値はリンカのデフォルトのライブラリ検索パスを指定します。この章のあとでこの準備がどのように使われるかが分るでしょう。
Warning |
この段階ではまだ Binutils の構築とソースのディレクトリを削除しないで下さい。この章のもう少し先で、再び現状のまま必要となります。 |