GCC-4.9.1

Introduction à GCC

Le paquet GCC contient une collection de compilateurs GNU. Cette page décrit l'installation des compilateurs pour les langages suivants: C, C++, Fortran, Objective C, Objective C++, et Go. Deux langages supplémentaires, Ada et Java sont disponibles dans cette collection. Il y a des impositions spécifiques, donc ils sont décrits dans des pages séparées (GCC-Ada-4.9.1 et GCC-Java-4.9.1). Comme C et C++ sont installés dans LFS, cette page est soit pour mettre à jour C et C++, ou pour installer des compilateurs supplémentaires.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-7.6.

[Attention]

Attention

Si vous mettez à jour depuis une version de GCC antérieure à 4.9.1, vous devez faire attention en compilant les modules externes au noyau. Vous devriez vous assurer que le noyau et tous ses modules natifs sont aussi compilés en utilisant la même version de GCC que celle utilisée pour construire les modules externes. Ce problème ne touche pas les mises à jour du noyau natif (et des modules du noyau), car les instructions ci-dessous sont une réinstallation complète de GCC. Si vous avez installé des modules externes, assurez-vous qu'ils sont recompilés en utilisant la version mise à jour de GCC. Comme toujours, ne mettez jamais à jour les en-têtes du noyau à partir de celles utilisées quand on a compilé Glibc dans LFS.

Informations sur le paquet

Téléchargements supplémentaires

Dépendances de GCC

Recommandées

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/gcc

Installation de GCC

[Important]

Important

Sauf si vous spécifiez des langages autre que C et C++ à la commande ./configure dessous, processus d'installation écrasera les compilateurs C et C++ et les bibliothèques existants de GCC. Avoir les paquets Tcl, Expect et DejaGnu d'installer avant de commencer la construction est hautement recommandé afin que vous puissiez lancer la suite de tests complète.

Ne continuez pas avec la commande make install avant d'être sûr que la construction a réussi. Vous pouvez comparer vos résultats de test avec ceux qui se trouvent sur http://gcc.gnu.org/ml/gcc-testresults/. Il se peut que vous vouliez également vous reporter aux informations qui se trouvent dans la section GCC du chapitre 6 du livre LFS (http://www.fr.linuxfromscratch.org/view/lfs-stable/chapter06/gcc.html).

Les instructions dessous utilisent intentionnellement le processus « bootstrap ». Le bootstrap est utile pour la robustesse et est fortement recommandé pour un changement de version des compilateurs. Pour désactiver, passez --disable-bootstrap dans les options ./configure ci-dessous.

Comme dans LFS, corrigez un problème identifié upstream:

sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c

Installez GCC en lançant les commandes suivantes:

patch -Np1 -i ../gcc-4.9.1-upstream_fixes-1.patch    &&
mkdir ../gcc-build                                   &&
cd    ../gcc-build                                   &&
../gcc-4.9.1/configure                               \
    --prefix=/usr                                    \
    --libdir=/usr/lib                                \
    --enable-shared                                  \
    --enable-threads=posix                           \
    --enable-__cxa_atexit                            \
    --enable-clocale=gnu                             \
    --disable-multilib                               \
    --with-system-zlib                               \
    --enable-languages=c,c++,fortran,go,objc,obj-c++ &&
make

Si vous avez installé des paquets supplémentaires comme Valgrind et GDB, la partie de GCC de la suite de tests lancera plus de tests que dans LFS. Certain d'entre eux signaleront des FAIL et d'autres XPASS (passage quand échec attendu). Pour lancer les vérifications:

ulimit -s 32768 &&
make -k check

Les tests sont très longs, et les résultats peuvent être très difficiles à trouver dans les logs, spécialment si vous utilisez des travaux en parallèle avec make. Vous pouvez avoir un résumé des tests avec:

../gcc-4.9.1/contrib/test_summary

Maintenant, en tant qu'utilisateur root :

make install &&
mkdir -pv /usr/share/gdb/auto-load/usr/lib              &&
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &&
chown -v -R root:root \
    /usr/lib/gcc/*linux-gnu/4.9.1/include{,-fixed}

Quelques paquets veulent trouver le préprocesseur C dans /lib ou peuvent se référer au compilateur C sous le nom de cc. Les liens symboliques suivants ne sont pas utiles si vous avez suivi les instructions LFS, depuis qu'ils sont déjà créés. Si vous ne les avez pas sur votre système, tapez en tant qu'utilisateur root :

ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc

Explication des commandes

patch ... gcc-4.9.1-upstream_fixes-1.patch: ce correctif corrige des bogues dans le compilateur C++, qui aboutissent à des erreurs de segmentation dans certain cas.

mkdir ../gcc-build; cd ../gcc-build : La documentation de GCC recommande de construire le paquet dans un répertoire de construction dédié.

--enable-shared --enable-threads=posix --enable-__cxa_atexit : Ces paramètres sont requis pour construire les bibliothèques de C++ pour des standards publiés.

--enable-clocale=gnu: Ce paramètre est une sécurité pour les données locales incomplètes.

--disable-multilib : Ce paramètre assure que les fichiers sont créés pour l'architecture spécifique à votre ordinateur.

--with-system-zlib: Utilise la version système de zlib au lieu de la version fournie. zlib est utilisé pour compresser et décompresser les langages intermédiares de GCC dans les fichiers objets LTO "(Link Time Optimization)".

--enable-languages=c,c++,fortran,go,objc,obj-c++> : Cette commande identifie les langages à construire. Il se peut que vous modifiez cette commande pour supprimer des langages non désirés.

ulimit -s 32768: Cette commande empêche plusieurs scripts de se lancer en dehors de l'espace de la pile.

make -k check : Cette commande lance une suite de tests sans s'arrêter si une erreur est rencontrée.

../gcc-4.9.1/contrib/test_summary : Cette commande produira un résumé des résultats de la suite de tests. Vous pouvez ajouter | grep -A7 Summ à la commande pour produire ue version du résumé encore plus condensée. Il se peut que vous souhaitiez aussi rediriger la sortie vers un fichier pour visualiser et comparer à l'avenir.

mv -v /usr/lib/*gdb.py ...: Le processus d'installation mets quelques fichiers utilisé par gdb sous le répertoire /usr/lib. Cela génère des messages d'erreur curieux quand ldconfig est utilisé. cette commande déplace les fichiers à un autre endroit.

chown -v -R root:root /usr/lib/gcc/*linux-gnu/... : Si le paquet est construit par un utilisateur différent de root, le propriétaire du répertoire include installé sera incorrect. Ces commandes modifient l'appartenance vers l'utilisateur et le groupe root.

Contenu

Plusieurs noms de programmes et de bibliothèques et des descriptions ne sont pas listés ici, mais peuvent être trouvé dans http://www.fr.linuxfromscratch.org/view/lfs-stable/chapter06/gcc.html#contents-gcc depuis qu'ils sont initialement installés dans LFS.

Programmes installés: gccgo et gfortran, lié en dur à des nomns spécifiques à l'architecture
Bibliothèques installées: libgfortran.{so,a}, libgo.{so,a}, libgobegin.a, libobjc.{so,a}, et de nombreux autres bibliothèques et d'éxécutables dans /usr/lib/gcc et /usr/libexec/gcc
Répertoires installés: /usr/lib/gcc/<arch-triplet>/4.9.1/include/objc et /usr/lib/go

Descriptions courtes

gccgo

est un compilateur basé sur GCC pour le langage Go.

gfortran

est un compilateur basé sur GCC pour le langage Fortran.

Last updated on : 2013-03-14 02:26:59 +010