GCC-4.5.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 et Ada. 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 IcedTea6-1.9.7 ou JDK-6 Update 18, 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.

[Attention]

Attention

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

Ce paquet est connu pour se construire et fonctionner correctement sur une plateforme LFS-6.5.

Informations sur le paquet

Dépendances de GCC

Recommandées

[Note]

Note

Si vous envisagez de compiler Ada, vous devrez installer GNAT temporairement pour satisfaire la dépendance circulaire quand vous recompilez GCC pour inclure Ada. Sur la page de téléchargement d'AdaCore, choisissez votre plateforme et 2010, puis sélectionnez le fichier à télécharger. Vous voulez probablement le fichier x86-linux ou x86_64-linux.

Informations sur le paquet GNAT GPL 2010

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

Installation de GNAT

Avant de déballer et d'aller dans le répertoire de construction de GCC, déballez au préalable l'archive tar de GNAT et rendez-vous dans le répertoire nouvellement créé, puis installez GNAT en lançant la commande suivante :

make ins-all prefix=<Your build directory>/gnat

Vous pouvez appeler le compilateur GNAT en exécutant le binaire gcc installé dans <Your build directory>/gnat/bin.

Vous pouvez maintenant supprimer le répertoire GNAT des sources :

cd .. &&
rm -rf gnat-2010-i686-gnu-linux-libc2.3-bin

Préparez la compilation de GCC en mettant la version de GNAT de gcc au début de la variable PATH en utilisant les commandes suivantes :

PATH_HOLD=$PATH &&
export PATH=<Your build directory>/gnat/bin:$PATH_HOLD

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. Il est hautement recommandé d'installer les paquets Tcl, Expect et DejaGnu avant de commencer la construction 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 y a aussi une résultat de tests pour la plateforme i686 32 bits issus d'un système LFS-SVN-20101029 sur http://anduin.linuxfromscratch.org/files/BLFS/svn/gcc451_test.txt. 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/svn/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, cette installation incluant le compilateur Ada en tant que langage installé, un bootstrap est requis. Le compilateur GNAT doit être utilisé pour stage1 du bootstrap afin de construire Ada. Si le processus n'a pas utilisé de « bootstrap », vous pourriez finir par avoir un gcc installé sur le système qui a été produit par un compilateur étranger.

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
sed -i 's@\./fixinc\.sh@-c true@'        gcc/Makefile.in       &&
sed -i 's/Standard/Types/'               gcc/ada/uintp.adb     &&

mkdir ../gcc-build &&
cd    ../gcc-build &&
../gcc-4.5.1/configure \
    --prefix=/usr \
    --with-system-zlib \
    --libexecdir=/usr/lib \
    --enable-shared \
    --enable-threads=posix \
    --enable-__cxa_atexit \
    --disable-multilib \
    --enable-bootstrap \
    --enable-clocale=gnu \
    --enable-languages=c,c++,ada,fortran,java,objc,obj-c++ &&
make bootstrap &&
make -k check  &&
../gcc-4.5.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/i686-pc-linux-gnu/4.5.1/include \
    /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/ada{lib,include}

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

Vous devriez maintenant passer en utilisateur non privilégié et supprimer l'installation de GNAT et effectuer d'autres nettoyages :

rm -rf <Your build directory>/gnat
export PATH=$PATH_HOLD &&
unset PATH_HOLD

Explication des commandes

Les deux commandes sed sont les mêmes que celles utilisées pendant la construction de LFS. La troisième corrige un probl\me avec la construction d'Ada.

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++,ada,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.5.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/i686-pc-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: addr2name.awk, fastjar, gcj, gcj-dbtool,gcjh, gfortran, gij, gjnih, gnat, gnatbind, gnatbl, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, 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 numerous other run-time libraries et executables in /usr/lib/gcc
Répertoires installés: /usr/include/c++/4.5.1/{gcj,gnu,java,javax,org}, /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/ada{include,lib}, /usr/lib/gcj-4.5.1, /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/svn/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.

gnat

est le compilateur Ada appelé par gcc.

gnatbind

est utilisé pour attacher des objets compilés.

gnatbl

est l'éditeur de liens Ada.

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.

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.

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 2011-01-04 00:47:42 +0100