GCC-4.8.1

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.40/IcedTea-2.4.1 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.4.

[Attention]

Attention

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

Dépendances de GCC

Recommandées

Requises pour la construction de java

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

[Note]

Note

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
find /opt/gnat -name ld -exec mv -v {} {}.old \;
find /opt/gnat -name as -exec mv -v {} {}.old \;

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:

sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in         &&
sed -i 's/\(install-data-am:\).*/\1/'             libffi/include/Makefile.in &&
sed -i 's/install_to_$(INSTALL_DEST) //'          libiberty/Makefile.in      &&
sed -i 's@\./fixinc\.sh@-c true@'                 gcc/Makefile.in            &&
case `uname -m` in
      i?86) sed -i 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in ;;
esac &&
mkdir ../gcc-build &&
cd    ../gcc-build &&
../gcc-4.8.1/configure          \
    --prefix=/usr               \
    --libdir=/usr/lib           \
    --libexecdir=/usr/lib       \
    --enable-shared             \
    --enable-threads=posix      \
    --enable-__cxa_atexit       \
    --disable-multilib          \
    --disable-bootstrap         \
    --disable-install-libiberty \
    --with-system-zlib          \
    --enable-clocale=gnu        \
    --enable-lto                \
    --enable-languages=c,c++,fortran,ada,go,java,objc,obj-c++ &&
make

Installation de GCC

Installez GCC en lançant les commandes suivantes :

[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 ci-dessous initialise le mécanisme de construction pour faire un « bootstrap » volontairement. Cela est nécessaire si vous installez le compilateur ADA. Même si vous ne le faite pas, un bootstrap est recommandé pour plus de robustesse.


ulimit -s 32768 &&
make -k check   &&
../gcc-4.8.1/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     &&
chown -v -R root:root \
    /usr/lib/gcc/*linux-gnu/4.8.1/include{,-fixed} \
    /usr/lib/gcc/*linux-gnu/4.8.1/ada{lib,include}

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

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 autres commandes sed sont les mêmes que celle 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.

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

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

--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,java,objc,obj-c++,ada,go> : 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.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.

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, and architecture specific names
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 bibliothèques d'exécution et des exécutables dans /usr/lib/gcc
Répertoires installés: /usr/include/c++/4.8.1/{gcj,gnu,java,javax,org,sun}, /usr/lib/gcc/<arch-model>-linux-gnu/4.8.1/ada{include,lib}, /usr/lib/gcj-4.8.1-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