Wie lang dauerte der letzte Vorgang? Der hier soll 22 Mal so lang dauern! Das Paket hat den C und den C++ Compiler. Jetzt also wie vorher:
tar -jxf pakete/gcc-4.6.2.tar.bz2 && cd gcc-4.6.2/
Nur braucht GCC noch GMP, MPFR und MPC zusätzlich!
tar -xjf ../pakete/mpfr-3.1.0.tar.bz2 && mv -v mpfr-3.1.0 mpfr && tar -xjf ../pakete/gmp-5.0.2.tar.bz2 && mv -v gmp-5.0.2 gmp && tar -xzf ../pakete/mpc-0.9.tar.gz && mv -v mpc-0.9 mpc
Dieser Patch sollte eingespielt werden, wenn ihr ein Molli oder lfs als Host benutzt das nicht älter als 2 - 3 Wochen ist, da es beim Kompilieren sonst zu einem Abbruch kommen kann:
patch -Np1 -i ../patches/gcc-4.6.2-cross_compile-1.patch
Auch hier wieder ein extra Build Verzeichnis, auf Empfehlung der GCC-Entwickler:
mkdir -v ../gcc-build && cd ../gcc-build
Und jetzt nicht die Geduld verlieren, oder will da wer kopieren? GCC zum kompilieren vorbereiten:
../gcc-4.6.2/configure \ --target=$MOLLI_TGT --prefix=/tools \ --disable-nls --disable-shared --disable-multilib \ --disable-decimal-float --disable-threads \ --disable-libmudflap --disable-libssp \ --disable-libgomp --disable-libquadmath \ --disable-target-libiberty --disable-target-zlib \ --enable-languages=c --without-ppl --without-cloog \ --with-mpfr-include=$MOLLI/sources/gcc-4.6.2/mpfr/src \ --with-mpfr-lib=$MOLLI/sources/gcc-build/mpfr/src/.libs
Es wird also alles ausgeschaltet, nur nicht:
Die Bedeutung der Parameter für configure:
--prefix=/tools
Dadurch wird das configure-Skript die GCC-Programme für die
Installation nach /tools
vorbereiten.
--disable-nls
Deaktiviert die Internationalisierung; i18n wird für die temporären Werkzeuge nicht benötigt.
Nun kompilieren wir GCC:
make
und das Kompilieren ist geschafft. Noch ist wegen des Fehlens von Tcl, Expect und DejaGNU ein Testlauf sinnlos.
So nun installieren:
make install
und das Installieren ist erledigt.
--disable-shared verhindert libgcc_eh.a, weswegen Glibc meckert. Daher machen wir folgendes:
ln -vs libgcc.a `$MOLLI_TGT-gcc -print-libgcc-file-name | \ sed 's/libgcc/&_eh/'`
und so wird für Glibc eine Verbindung von libgcc.a zu libgcc_eh.a symbolisch geknüpft. So haben wir auch alles, was Glibc so braucht.
Nun wieder raus aus dem Verzeichnis und löschen der selben:
cd .. && rm -rf gcc-*