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
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
DejaGnu-1.5
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
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 Makefile s 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