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
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
DejaGnu-1.5.1
Requises pour la construction de java
Zip-3.0,
UnZip-6.0,
et which-2.20
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
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