Les détails sur ce paquet sont disponibles dans Section 10.10.2, « Contenu de GCC. »
Le paquet GCC contient la collection de compilateurs GNU, qui inclut les compilateurs C et C++.
Le correctif suivant active des corrections d'erreurs de compilation avec le noyau :
patch -Np1 -i ../gcc-4.2.4-PR31490-1.patch
Faites deux ajustements essentiels pour le fichier specs de GCC pour vous assurer que GCC utilise notre environnement de construction :
patch -Np1 -i ../gcc-4.2.4-pure64_specs-1.patch
Pour être sûr que les deux outils utilise la bonne syntaxe, appliquez le correctif suivant :
patch -Np1 -i ../gcc-4.2.4-posix-1.patch
Le correctif suivant assure que gcc ne cherche pas libgcc_s.so dans le répertoire /usr lors de la compilation croisée :
patch -Np1 -i ../gcc-4.2.4-cross_search_paths-1.patch
Modifiez la spec StartFile pour pointer vers le bon emplacement des bibliothèques :
echo " #undef STARTFILE_PREFIX_SPEC #define STARTFILE_PREFIX_SPEC \"/tools/lib/\"" >> gcc/config/linux.h
Maintenant, modifiez le chemin de recherche include par défaut du
préprocesseur c de GCC pour n'utiliser que /tools :
cp -v gcc/Makefile.in{,.orig}
sed -e "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 /tools/include@g" \
gcc/Makefile.in.orig > gcc/Makefile.in
La documentation de GCC recommande de construire GCC en dehors du répertoire source, c'est-à-dire dans un répertoire dédié :
mkdir -v ../gcc-build cd ../gcc-build
Préparez la compilation de GCC :
../gcc-4.2.4/configure --prefix=/cross-tools \
--target=${CLFS_TARGET} --host=${CLFS_HOST} --disable-multilib \
--with-local-prefix=/tools --disable-nls --enable-shared \
--enable-languages=c,c++ --enable-__cxa_atexit \
--enable-c99 --enable-long-long --enable-threads=posix
Voici la signification des nouvelles options de configure :
--enable-languages=c,c++
Cette option nous assure que seuls les compilateurs C et C++ sont construits.
--enable-__cxa_atexit
Cette option permet l'utilisation de __cxa_atexit, plutôt que de atexit, pour enregistrer les destructeurs C++ pour les statiques locales et les objets globaux, et elle sert essentiellement pour une gestion des destructeurs respectant totalement les standards. Il affecte aussi les ABI C++, ce qui produit des bibliothèques C++ partagées et des programmes C++ interopérables avec d'autres distributions Linux.
--enable-c99
Active le support C99 pour les programmes C.
--enable-long-long
Active le support du type long long dans le compilateur.
--enable-threads=posix
Ceci active la gestion d'exception C++ pour le code multi-tâches.
Continuez en compilant le paquet :
make AS_FOR_TARGET="${CLFS_TARGET}-as" \
LD_FOR_TARGET="${CLFS_TARGET}-ld"
Installez le paquet :
make install
Les détails sur ce paquet sont disponibles dans Section 10.10.2, « Contenu de GCC. »