GCC-4.7.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, et C++ objet. Vous devriez vous assurer d'avoir réellement besoin de d'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.9 qu'on peut utiliser à la place du Java fourni par le paquet GCC. Nombreux sont ceux qui considèrent que JDK d'Oracle est un environnement Java plus robuste que celui fourni par GCC.

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

[Attention]

Attention

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

Recommandées

[Note]

Note

La construction de Ada depuis les sources n'est plus supportée par BLFS. Le paquet binaire de développement est basé sur gcc-4.5.4 et n'est pas capable de construire Ada depuis le paquet GCC actuel.

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

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 effectuent intentionnellement un « make bootstrap » au lieu d'un « make » complet. Bien que nous supposions que la version actuelle de GCC est installée dans LFS,un bootstrap est recommandé pour plus de robustesse.

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.7.2/configure \
--prefix=/usr            \
--libexecdir=/usr/lib    \
--with-system-zlib       \
--enable-shared          \
--enable-threads=posix   \
--enable-__cxa_atexit    \
--disable-multilib       \
--enable-bootstrap       \
--enable-clocale=gnu     \
--enable-languages=c,c++,fortran,java,objc,obj-c++ &&
make bootstrap &&
make -k check  &&
../gcc-4.7.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 

L'en-tête de l'interface libffi est installée dans un endroit où les autres paquets ne pourront pas la trouver. Si vous avez inclu Java comme un des langages installés, créez un lien symbolique dans /usr/include pour y remédier :

ln -v -sf `find /usr/lib/gcc -name ffitarget.h` /usr/include

Explication des commandes

Les trois commandes sed 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.

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

--enable-bootstrap : Ce paramètere est utilisé pour qu'une installation bootstrap s'effectue.

--enable-languages=c,c++,fortran,java,objc,obj-c++ : Cette commande est une sécurité contre des échecs dus à des données de locales incomplètes.

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

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

../gcc-4.7.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.

Contenu

Programmes installés: addr2name.awk, fastjar, gcj, gcj-dbtool,gcjh, gfortran, gij, gjnih, gprmake, grepjar, grmic, grmiregistry, gtreelang, jcf-dump, jv-convert, jv-scan et architecture specific names for gcj and gcjh
Bibliothèques installées: libffi.{so,a}, libgcj.{so,a}, libgfortran.{so,a}, libgfortranbegin.a, libgij.{so,a}, libobjc.{so,a} et de nombreuses autres bibliothèques d'exécution et des exécutables in /usr/lib/gcc
Répertoires installés: /usr/include/c++/4.7.2/{gcj,gnu,java,javax,org}, /usr/lib/gcj-4.7.2, /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

addr2name.awk

émule certaines fonctionnalités d'addr2line.

fastjar

est un outil d'archive pour les archives Java archives.

gcj

est un compilateur ahead-of-time pour le langage Java.

gcj-dbtool

est un outil pour créer et manipuler des bases de données de plans de fichiers de classe.

gcjh

génère des fichiers d'en-tête à partir de fichiers de classe Java.

gfortran

est le compilateur Fortran appelé par gcc.

gij

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

gjnij

est utilisé pour générer des fichiers d'en-tête JNI à partir de fichiers de classe. Son exécution revient à lancer gcjh -jni.

gprmake

est un outil utilisé pour créer des Makefiles qui supportent la compilation par plusieurs langages.

grepjar

recherche des fichiers jar pour un modèle.

grmic

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

grmiregistry

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

gtreelang

est une version très raccourcie de C, destinée à montrer les fonctionnalités de la génération de code de fond GCC. Seules ces fonctionnalités sont directement supportées par la génération de code de fond GCC et sont implémentées. Les fonctionnalités sont implémentées de la manière la plus facile et la plus claire à implémenter. Toutes voire la plupart des fonctionnalités de génération de code de fond ne sont pas implémentées. L'objectif est d'ajouter ces fonctionnalités progressivement jusqu'à ce que les fonctionnalités de fond GCC soient implémentées dans Treelang.

jcf-dump

affiche des informations sur les fichiers de classe Java.

jv-convert

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

jv-scan

affiche des informations sur les fichiers sources Java.

Last updated on : 2012-11-01 03:44:21 +010