GCC-4.8.2

Introduction à GCC

Le paquet GCC contient des compilateurs GNU. Ce paquet est utile pour compiler des programmes écrits en C, C++, Fortran, Java, C objet, C++ objet, Ada et Go. Vous devriez vous assurer d'avoir réellement besoin de l'un de ces compilateurs supplémentaires (celui C et C++ sont installés avec LFS) avant de les installer. En outre, il y a des instructions dans le livre BLFS pour installer OpenJDK-1.7.0.51/IcedTea-2.4.5 qu'on peut utiliser à la place du Java fourni par le paquet GCC. Nombreux sont ceux qui considèrent que Iced Tea est un environnement Java plus robuste que celui fourni par GCC.

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

[Attention]

Attention

Si vous mettez à jour depuis une version de GCC antérieure à 4.8.2, 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

Dépendances de GCC

Requises pour la construction de java

Zip-3.0, UnZip-6.0, et which-2.20

[Note]

Note

Recommandées

Si vous planifiez de compiler Ada, vous devrez installer GNAT temporairement pour satisfaire une dépendance circulaire quand vous allez recompiler GCC pour inclure Ada. Sur la page de teléchargement de AdaCore, choisissez votre plate-forme et 2013, ensuite sélectionné le fichier à télécharger. Vous voudrez probablement le fichier x86-linux ou x86_64-linux.

Information du paquet GNAT GPL 2013

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

Installation de GNAT

Avant de déballer et d'aller dans le répertoire des sources de GCC, déballez au préalable l'archive tar de GNAT. vous pouvez avoir à descendre des quelques niveaux et déballer une seconde archive. Par exemple, AdaCore-Download-2013-07-22_0530.tar se déballe dans x86_64-linux/2013/gnatgpl/gnat-gpl-2013-x86_64-pc-linux-gnu-bin.tar.gz. Déballez cette seconde archive et allez dans le nouveau répertoire créé. Installez GNAT en lançant la commande suivante :

make ins-all prefix=/opt/gnat

Vous pouvez appeler le compilateur GNAT en exécutant le binaire gcc installé dans /opt/gnat/bin.

Vous pouvez maintenant supprimer le répertoire GNAT des sources si vous le souhaitez.

Préparez la compilation de GCC en plaçant la version GNAT de gcc au début de la variable PATH en utilisant la commande suivante en tant qu'utilisateur root:

PATH_HOLD=$PATH &&
export PATH=/opt/gnat/bin:$PATH_HOLD

Cela présente l'inconvénient que les exécutables de GCC et Binutils sont pris du paquet GNAT qui vient d'être installé, mais les versions des exécutables sont dépassées comparées à celle installées dans LFS. Ce n'est pas important pour les compilateurs GCC, depuis qu'ils les recompilent eux-mêmes pendant le processus de bootstrap. Dans un autre sens, les outils ld et as dépassés sont utilisés tout du long. Pour utiliser les outils LFS, tapez:

find /opt/gnat -name ld -exec mv -v {} {}.old \;
find /opt/gnat -name as -exec mv -v {} {}.old \;

Installation de GCC

[Important]

Important

Il se peut que le processus d'installation écrase les compilateurs et les bibliothèques existants gcc et c++ 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 procédez pas à 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://lfs.traduc.org/view/lfs-stable/chapter06/gcc.html).

Les instructions dessous s'assureront que « bootstrap » est intentionnellement exécuté. C'est nécessaire si le compilateur Ada est construit de nouveau. Sinon s'il n'est pas, un bootstrap est recommandée pour la robustesse. Pour désactiver, passez --disable-bootstrap dans les options ./configure ci-dessous.

Installez GCC en lançant les commandes suivantes:

sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in         &&
sed -i 's/\(install-data-am:\).*/\1/'             libffi/include/Makefile.in &&
case `uname -m` in
      i?86) sed -i 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in ;;
esac &&
sed -i -e /autogen/d -e /check.sh/d fixincludes/Makefile.in 
mv -v libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx{,.disable}
mkdir ../gcc-build &&
cd    ../gcc-build &&
../gcc-4.8.2/configure          \
    --prefix=/usr               \
    --libdir=/usr/lib           \
    --enable-shared             \
    --enable-threads=posix      \
    --enable-__cxa_atexit       \
    --enable-clocale=gnu        \
    --disable-multilib          \
    --with-system-zlib          \
    --enable-lto                \
    --enable-languages=c,c++,fortran,ada,go,java,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   &&
../gcc-4.8.2/contrib/test_summary

Maintenant, en tant qu'utilisateur root :

make install &&
ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc     &&
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.8.2/include{,-fixed} \
    /usr/lib/gcc/*linux-gnu/4.8.2/ada{lib,include}

Vous devriez maintenant supprimer l'installation de GNAT et effectuer d'autres nettoyages :

rm -rf /opt/gnat &&
export PATH=$PATH_HOLD &&
unset PATH_HOLD

Explication des commandes

Les deux premières commandes sed empêche l'installation de la bibliothèque libffi livrée avec GCC, puisqu'elle est dépassée comparée à libffi-3.0.13. Les trois commandes suivantes sont les mêmes que celles utilisées pendant la construction de LFS.

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.

--enable-lto : Initialisez ce paramètre pour autoriser la construction d'un compilateur qui puisse faire du « link time optimization (lto) ».

--enable-languages=c,c++,fortran,ada,go,java,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.8.2/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.

ln -v -sf ../usr/bin/cpp /lib : Cette commande crée un lien vers le préprocesseur C vu que certains paquets s'attendent à ce qu'il soit installé dans le répertoire /lib.

ln -v -sf gcc /usr/bin/cc : Ce lien est créé car certains paquets se réfèrent au compilateur C en utilisant un nom alternatif.

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 des répertoires include et adalib installés (et leur contenu) sera incorrect. Ces commandes modifient l'appartenance vers l'utilisateur et le groupe root. Ommettez cette commande en modifiant les répertoires Ada si vous n'avez pas inclu Ada comme un des langages installés.

Contenu

Programmes installés: aot-compile, gappletviewer, gc-analyze, gccgo, gcj, gcj-dbtool, gcjh, gfortran, gij, gjar, gjarsigner, gjavah, gkeytool, gnat, gnatbind, gnatchop, gnatclean, gnatfind, gnative2ascii, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gorbd, grmic, grmid, grmiregistry, gserialver, gtnameserv, jcf-dump, jv-convert, rebuild-gcj-db, et des noms d'architecture spécifiques
Bibliothèques installées: libgcj_bc.so, libgcj.so, libgcj-tools.so, libgfortran.{so,a}, libgij.so, libgo.{so,a}, libgobegin.a, libobjc.{so,a} et de nombreux autres dans kes bibliothèques d'exécution et des exécutables dans /usr/lib/gcc et /usr/libexec/gcc
Répertoires installés: /usr/include/c++/4.8.2/{gcj,gnu,java,javax,org,sun}, /usr/lib/gcc/<arch-model>-linux-gnu/4.8.2/ada{include,lib}, /usr/lib/gcj-4.8.2-13, /usr/lib/go, /usr/lib/security, et /usr/share/java

Certains noms de programme et de bibliothèque et certaines descriptions ne sont pas listés ici mais vous pouvez les trouver sur http://lfs.traduc.org/view/lfs-stable/chapter06/gcc.html#contents-gcc vu qu'ils étaient installés au départ lors de la construction de LFS.

Descriptions courtes

aot-compile

cherche un répertoir pour le bytecode java et utlise gcj pour le compiler en code natif.

gappletviewer

charge et lance une applet Java.

gc-analyze

analyse les "garbage collector" (GC) des vidages de mémoire du code Java.

gccgo

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

gcj

est un compilateur d'avance de temps pour le langage Java.

gcj-dbtool

est un outil pour créer et manipuler des bases de données cartographique de fichier de classes.

gcjh

génère les fichiers d'entêtes des fichiers de classes de Java.

gfortran

est le compilateur Fortran appelé dans gcc.

gij

est l'interpréteur GNU pour le code binaire Java.

gjar

est une implémentation (partielle) de l'utilitaire jar qui vient avec le JDK de Sun.

gjarsigner

est un outil de vérification et signature des fichiers Java ARchive (JAR).

gjavah

génére les fichiers d'entêtes depuis les fichiers de class Java.

gkeytool

gère les clés privés et les certificats publiques dans un environnement Java.

gnat

est le compilateur Ada appelé par gcc.

gnatbind

est utilisé pour attacher des objets compilés.

gnatchop

est utile pour renommer des fichiers pour satisfaire les conventions de nommage standard par défaut du fichier Ada.

gnatclean

est utilisé pour supprimer des fichiers associés à un projet GNAT.

gnatfind

est le chercheur de définitions/utilisation GNAT.

gnative2ascii

est un convertisseur d'encodage pour Java.

gnatkr

est utilisé pour déterminer le nom crunché d'un fichier donné, lorsqu'un crunch a été réglé à une longueur maximum spécifiée.

gnatlink

est utilisé pour lier des programmes et construire un fichier exécutable.

gnatls

est le navigateur d'unités compilées.

gnatmake

est une possibilité make automatique.

gnatname

listera les fichiers associés à un projet GNAT.

gnatprep

est le préprocesseur externe de GNAT.

gnatxref

est le référenceur croisé GNAT.

gorbd

est un démon de demandes d'objets cassés.

grmic

génère des bouts d'appels à une méthode distante.

grmid

est un démon d'activation du sytème RMI.

grmiregistry

démarre un registre objet distant sur l'hôte actuel.

gserialver

affiche le serialVersionUID de la classe spécifiée.

gtnameserv

démarre un service de noms.

jcf-dump

affiche des informations sur les fichiers de classe Java.

jv-convert

convertit des fichiers d'un encodage à l'autre.

rebuild-gcj-db

Fusionne la base de données de per-solib fait par aot-compile dans la base de données coté système.

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