Paket GCC berisi koleksi kompiler GNU, termasuk kompiler C dan C++

Instalasi (Ingat Selalu : Prinsip Kerja di Tutorial 10)

GCC kini membutuhkan paket GMP, MPFR dan MPC. Paket-paket ini akan kita instalasi bersamaan dengan instalasi GCC. Ekstrak paket-paket tersebut dan ganti nama direktorinya seperti dibawah ini, sehingga GCC secara otomatis mengenali mereka.

tar -jxf ../mpfr-3.0.0.tar.bz2
 mv -v mpfr-3.0.0 mpfr
 tar -jxf ../gmp-5.0.1.tar.bz2
 mv -v gmp-5.0.1 gmp
 tar -zxf ../mpc-0.8.2.tar.gz
 mv -v mpc-0.8.2 mpc

Dokumentasi GCC menyarankan untuk melakukan instalasi di luar direktori hasil ektraksi kita, karenanya kita buatkan direktori baru diluar :

mkdir -v ../gcc-build
 cd ../gcc-build

Lakukan konfigurasi pra kompilasi

 ../gcc-4.5.2/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 \
 --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
 --without-ppl --without-cloog

Keterangan :

–disable-shared
Opsi ini memaksa GCC untuk menghubungkan library internalnya secara statik. Kita lakukan ini untuk menghindari masalah yang mungkin muncul dengan sistem host.

–disable-decimal-float,
–disable-threads,
–disable-libmudflap,
–disable-libssp, –disable-libgomp

Opsi-opsi diatas menonaktifkan dukungan untuk decimal floating point extension, threading, libmudflap, libssp and libgomp secara bersamaan, karena fitur-fitur tersebut akan mengalami kegagalan pembuatan saat kompilasi suatu cross compiler dan tidak dibutuhkan untuk fungsi cross-compiling libc sementara yang kita gunakan.

–disable-multilib

Di x86_64, LFS belum mendukung konfigurasi multilib. Kita berikan opsi ini agar tidak terjadi gangguan pada x86

–enable-languages=c

Opsi ini meyakinkan kita bahwa hanya kompiler C saja yang dibangun karena ini bahasa yang kita butuhkan saat ini

–with-gmp-include=…
Opsi ini memberitahukan kepada GCC dimana headers GMP (yang kita ekstrak bersama-sama di awal tadi) berada.

–with-gmp-lib=…
Opsi ini memberi tahukan kepada GCC dimana library GMP berada.

–without-ppl, –without-cloog

Kedua opsi ini mencegah GCC untuk membangun dengan menimpa library PPL dan CLoog yang mungkin saja ada di sistem host, tetapi tidak ada di lingkungan chroot.

Selanjutnya kita kompilasi GCC dengan perintah

make

Lalu install dengan perintah

make install

Karena diatas kita menggunakan opsi –disable-shared yang berarti bahwa file libgcc_eh.a tidak dibuat dan tidak diinstall maka untuk memenuhi kebutuhannya pada library tersebut kita buatkan symbolic link ke libgcc.a dikarenakan file tersebut berisi objek yang secara normal ada pada libgcc_eh.a

ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
 sed 's/libgcc/&_eh/'`

Bersambung (rezaervani@gmail.com)

Tutorial Sebelumnya :