Les détails sur ce paquet sont situés dans Section 10.11.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-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/rs6000/linux.h echo " #undef STARTFILE_PREFIX_SPEC #define STARTFILE_PREFIX_SPEC \"/tools/lib/\"" >> gcc/config/rs6000/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.inFinally, disable -B in
configure so wrong architecture libraries are not
picked up, as -B is not expanded by the multilib spec:
cp -v configure{,.orig}
sed -e '/FLAGS_FOR_TARGET.*\/lib\//s@-B[^ ]*/lib/@@g' configure.orig > \
configureLa 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} \
--with-local-prefix=/tools --disable-nls --enable-shared \
--enable-languages=c,c++ --enable-__cxa_atexit \
--enable-c99 --enable-long-long --enable-threads=posixVoici 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_atexitCette 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-c99Active le support C99 pour les programmes C.
--enable-long-longActive le support du type long long dans le compilateur.
--enable-threads=posixCeci 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.11.2, “Contenu de GCC.”