10.21. GCC-4.8.2

Le paquet GCC contient la collection de compilateurs GNU, qui inclut les compilateurs C et C++.

10.21.1. Installation de GCC

Le correctif suivant contient un certain nombre de mises à jour vers la branche 4.8.2 des développeurs de GCC :

patch -Np1 -i ../gcc-4.8.2-branch_update-1.patch

Appliquez une subsitution sed qui supprimera l'exécution du script fixincludes :

cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in

Appliquez une substitution sed qui va supprimer l'installation de libiberty.a. La version of libiberty.a fournie par Binutils sera utilisée à la place :

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/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 :

CC="gcc -isystem /usr/include ${BUILD64}" \
CXX="g++ -isystem /usr/include ${BUILD64}" \
LDFLAGS="-Wl,-rpath-link,/usr/lib64:/lib64:/usr/lib:/lib" \
  ../gcc-4.8.2/configure --prefix=/usr --libdir=/usr/lib64 \
    --libexecdir=/usr/lib64 --enable-shared --enable-threads=posix \
    --enable-__cxa_atexit --enable-c99 --enable-long-long \
    --enable-clocale=gnu --enable-languages=c,c++ --disable-libstdcxx-pch \
    --enable-cloog-backend=isl --disable-isl-version-check --with-system-zlib \
    --enable-checking=release --enable-libstdcxx-time \
    --disable-install-libiberty

Compilez le paquet :

make
[Important]

Important

Dans cette section, la suite de tests pour GCC est considérée critique. Ne les sautez sous aucun prétexte.

Augmentez la taille de la pile avant de lancer les tests :

ulimit -s 32768

Testez les résultats mais ne vous arrêtez pas aux erreurs :

make -k check

L'option -k est utilisé pour que la suite de test s'exécute jusqu'à la fin et ne s'arrête pas au premier échec. La suite de tests de GCC est très complète et il est presque certain qu'elle générera quelques échecs. Pour recevoir un résumé des résultats de la suite de tests, lancez :

../gcc-4.8.2/contrib/test_summary

Pour n'avoir que les résumés, redirigez la sortie vers grep -A7 Summ.

Quelques échecs inattendus sont inévitables. Les développeurs de GCC connaissent ces problèmes, mais ne les ont pas encore résolus.

Installez le paquet :

make install

Quelques paquets s'attendent à ce que le préprocesseur C soit installé dans le répertoire /lib Pour supporter ces paquets, créez ce lien symbolique :

ln -sv ../usr/bin/cpp /lib

Beaucoup de paquets utilisent le nom cc pour appeler le compilateur C. Pour satisfaire ces paquets, créez un lien symbolique :

ln -sv gcc /usr/bin/cc

Enfin, déplacez des fichiers mal placés :

mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib64/*gdb.py /usr/share/gdb/auto-load/usr/lib64

10.21.2. Contenu de GCC

Programmes installés: c++, cc (link to gcc), cpp, g++, gcc et gcov
Bibliothèques installés: libasan.[a,so], libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, libgomp.[a,so], libmudflap.[a,so], libmudflapth.[a,so], libssp.[a,so], libssp_nonshared.a, libstdc++.[a,so], libsupc++.a, and libtsan.[a,so]
Répertoires installés: /usr/include/c++, /usr/lib/gcc, /usr/share/gcc-4.8.2

Descriptions courtes

cc

Le compilateur C

cpp

Le préprocesseur C ; il est utilisé par le compilateur pour l'extension des instructions #include, #define et d'autres instructions similaires dans les fichiers sources

c++

Le compilateur C++

g++

Le compilateur C++

gcc

Le compilateur C

gcov

Un outil de tests ; il est utilisé pour analyser les programmes et savoir où des optimisations seraient suivies du plus d'effet

libasan

La bibliothèque d'exécution Address Sanitizer

libgcc

Contient un support en exécution pour gcc

libgcov

Bibliothèque qui est liée à un programme lorsqu'on demande à gcc d'activer le profilage

libgomp

une implémentation GNU de l'API OpenMP pour la programmation en C/C++ et Fortran de mémoire parallèle partagée pour plusieurs plateformes

libmudflap

Les bibliothèques libmudflap sont utilisées par GCC pour des opérations d'instrumentalisation des pointeurs et de déréférencement des tableaux.

libssp

Contient le support des routines pour la fonctionnalité de protecteur Stack-mashing de GCC

libstdc++

La bibliothèque C++ standard

libsupc++

Fournit des routines pour le support du langage de programmation C++

libtsan

La bibliothèque pendant l'exécution Thread Sanitizer