Hier wird eine GCC-Toolchain mit gcc-4.7.0 konfiguiert und gebaut auf einem x86_64, die
Prinzipiell wird die Konfigurierung nicht geändert, so dass diese Anleitung leicht auf andere Versionen adaptiert werden kann.
wgetlist (wget -i wgetlist)
http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/gcc/gcc-4.7.0/gcc-4.7.0.tar.bz2
mkdir buildbinutils-tc47 cd buildbinutils-tc47/ ../binutils-2.22/configure --prefix=/opt/tc47/ make make install
cd gcc-4.7.0/ tar -jxf ../mpfr-3.1.0.tar.bz2 mv mpfr-3.1.0/ mpfr tar -Jxf ../gmp-5.0.4.tar.xz mv gmp-5.0.4/ gmp tar -zxf ../mpc-0.9.tar.gz mv mpc-0.9/ mpc mkdir ../gcctc47build cd ../gcctc47build ../gcc-4.7.0/configure --prefix=/opt/tc47/ --with-local-prefix=/opt/tc47/ --with-gnu-as --with-as=/opt/tc47/bin/as --with-gnuld --with-ld=/opt/tc47/bin/ld --enable-threads --enable-languages=c,c++ --with-mpfr-include=/mnt/lfs/src/gcc-4.7.0/mpfr/src --with-mpfr-lib=/mnt/lfs/src/gcctc47build/mpfr/src/.libs --with-long-double-128 --disable-multilib
Bemerkungen:
../binutils-2.22/configure --prefix=/opt/tc47/ --target=i686-linux-gnu make install
mkdir gcc-buildcrossi686 cd gcc-buildcrossi686 ../gcc-4.7.0/configure --prefix=/opt/tc47/ --with-local-prefix=/opt/tc47/ --target=i686-linux-gnu --enable-threads --enable-languages=c,c++ --with-mpfr-include=/mnt/lfs/src/gcc-4.7.0/mpfr/src --with-mpfr-lib=$(pwd)/mpfr/src/.libs --disable-multilib --without-headers make make install
Bemerkungen:
Nun kann man z.B. Bootloader oder Betriebssystemkerne compilieren.
Hier besteht eine zirkuläre Abhängigkeit zur libc (entweder uClibc oder glibc), die z.B. verhindert, das der Startcode der dynamischen libgcc.so gelinkt werden kann. Die statischen Bibliotheken werden aber gebaut und können installiert werden:
BUILDDIR=$(pwd) cd i686-linux-gnu/libgcc/ ln -s /mnt/lfs/src/uClibc-0.9.33/include/ . cd include patch -b -p0 << EOP --- features.h.vorrudi 2012-02-01 22:21:04.000000000 +0100 +++ features.h 2012-06-16 14:33:41.000000000 +0200 @@ -18,7 +18,7 @@ #ifndef _FEATURES_H #define _FEATURES_H 1 - +#include"libc-symbols.h" /* These are defined by the user (or the compiler) to specify the desired environment: EOP cd $BUILDDIR make all-target-libgcc cd $BUILDDIR/i686-linux-gnu/libgcc/ cp libgc*.a /opt/tc47/lib/gcc/i686-linux-gnu/4.7.0
Die libcsymbols.h wird aber nur zum Zweck der libgcc.a Generierung benötigt. Daher muss der Patch vor dem installieren wieder entfernt werden.
Die Startcodedateien müssen noch installiert werden:
cd $BUILDDIR/i686-linux-gnu/libgcc/ cp c*.o /opt/tc47/lib/gcc/i686-linux-gnu/4.7.0/