本パッケージの詳細は 6.16.2. 「GCC の構成」 を参照してください。
GCC パッケージは C コンパイラや C++ コンパイラなどの GNU コンパイラコレクションを提供します。
最近の GCC は GMP パッケージと MPFR パッケージを必要とします。 これらのパッケージはホストシステムに含まれていないかもしれないため、以下を実行してビルドの準備をします。
tar -jxf ../mpfr-2.4.2.tar.bz2 mv -v mpfr-2.4.2 mpfr tar -jxf ../gmp-5.0.0.tar.bz2 mv -v gmp-5.0.0 gmp
GCC のドキュメントでは、ソースディレクトリ以外の専用のビルドディレクトリを作成することが推奨されています。
mkdir -v ../gcc-build cd ../gcc-build
GCC をコンパイルするための準備を行います。
../gcc-4.4.3/configure \ --target=$LFS_TGT --prefix=/tools \ --disable-nls --disable-shared --disable-multilib \ --disable-decimal-float --disable-threads \ --disable-libmudflap --disable-libssp \ --disable-libgomp --enable-languages=c
configure オプションの意味:
--disable-shared
このオプションは内部ライブラリをスタティックライブラリとしてリンクすることを指示します。 ホストシステムに関係しそうな問題を回避するためです。
--disable-decimal-float, --disable-threads,
--disable-libmudflap, --disable-libssp,
--disable-libgomp
これらのオプションは順に、十進浮動小数点制御、スレッド処理、libmudflap、libssp、libgomp のサポートをいずれも無効にすることを指示します。 これらの機能を含めていると、クロスコンパイラをビルドする際にはコンパイルに失敗します。 またクロスコンパイルによって一時的な libc ライブラリを構築する際には不要なものです。
--disable-multilib
x86_64 に対して LFS は まだ multilib のサポートをしていません。 このオプション指定は x86 には無関係です。
--enable-languages=c
このオプションは C コンパイラのみビルドすることを指示します。 この時点で必要なのはこの言語だけだからです。
GCC をコンパイルします。
make
コンパイルが終了しました。 この時点でもテストスイートを実行することはできます。 ただ前にも述べているように、テストスイートのフレームワークがまだ準備できていません。 さらにこの時点で生成されるプログラムは、すぐに次の生成作業によって置き換えられますから、 この時点でテストを実行することはあまり意味がありません。
パッケージをインストールします。
make install
--disable-shared
オプションを指定すると libgcc_eh.a
を生成せずインストールしません。 Glibc パッケージはこのライブラリに依存しており、ビルドの際に -lgcc_eh
を指定することで利用されます。依存している点は
libgcc.a
へのシンボリックリンクを生成しておけば問題はありません。
libgcc_eh.a
に含まれるオブジェクトが、 最終的には
libgcc.a
の中にも含まれることになるからです。
ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \ sed 's/libgcc/&_eh/'`
本パッケージの詳細は 6.16.2. 「GCC の構成」 を参照してください。