Les détails sur ce paquet sont disponibles dans Section 6.15.2, « Contenu de GCC. »
Le paquet GCC contient la collection de compilateurs GNU, qui inclut les compilateurs C et C++.
GCC exige maintenant les paquets GMP et MPFR. Comce il se peut que ces paquets ne soient pas inclus dans votre distribution hôte, ils vont être compilés avec GCC :
tar -jxf ../mpfr-2.4.1.tar.bz2 mv -v mpfr-2.4.1 mpfr tar -jxf ../gmp-4.3.1.tar.bz2 mv -v gmp-4.3.1 gmp
La documentation de GCC recommande de ne pas construire GCC dans le répertoire des sources mais dans un répertoire de construction dédié :
mkdir -v ../gcc-build cd ../gcc-build
Préparez la compilation de GCC :
../gcc-4.4.1/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
Voici la signification des options de configure :
--disable-shared
Ce paramètre oblige GCC à lier ses bibliothèques internes de manière statique. On procède ainsi pour éviter les problèmes avec le système hôte.
--disable-decimal-float, --disable-threads,
--disable-libmudflap, --disable-libssp,
--disable-libgomp
Ces paramètres désactivent le support de l'extension ayant un point flottant décimal, du threading, respectivement de libmudflap, libssp et libgomp. Ces fonctionnalités ne parviendront pas à se construire lors de la construction d'un compilateur croisé et ne sont pas nécessaires pour la tâche de compilation croisée de la libc temporaire.
--disable-multilib
Sur du x86_64, LFS ne supporte pas encore une configuration multilib (plusieurs bibliothèques). Ce paramètre n'a pas d'importance pour x86.
--enable-languages=c
Cette option nous assure que seul le compilateur C sera construit. C'est le seul langage actuellement nécessaire.
Compilez GCC en lançant :
make
La compilation est maintenant terminée. À ce point, la suite de tests devrait être lancée. Mais, comme nous l'avons dit plus tôt, l'ensemble de travail de la suite de tests n'est pas encore en place. Les bénéfices à lancer les tests maintenant seraient minimes car les programmes de la première passe seront bientôt remplacés.
Installez le paquet :
make install
L'utilisation de --disable-shared
signifie que le
fichier libgcc_eh.a
n'est pas créé et
installé. Le paquet Glibc dépend de cette bibliothèque puisqu'il
utilise -lgcc_eh
à
l'intérieur de son système de construction. On peut satisfaire
cette dépendance en créant un lien symbolique vers libgcc.a
, puisque ce fichier va finir par
contenir les objets normalement contenus dans libgcc_eh.a
:
ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \ sed 's/libgcc/&_eh/'`
Les détails sur ce paquet sont disponibles dans Section 6.15.2, « Contenu de GCC. »