Les détails sur ce paquet sont situés 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/sparc/linux.h echo " #undef STARTFILE_PREFIX_SPEC #define STARTFILE_PREFIX_SPEC \"/tools/lib/\"" >> gcc/config/sparc/linux64.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 situés dans Section 10.10.2, “Contenu de GCC.”