5.3. GCC-4.6.2 - 1. Durchgang

5.3.1. Installation des Cross GCC

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-*