GCC-5.2.0
Introduction à GCC
Le paquet GCC contient une
collection de compilateurs GNU. Cette page décrit l'installation
des compilateurs pour les langages suivants: C, C++, Fortran,
Objective C, Objective C++, et Go. Deux langages supplémentaires,
Ada et Java sont disponibles dans cette collection. Il y a des
impositions spécifiques, donc ils sont décrits dans des pages
séparées (GCC-Ada-5.2.0 et GCC-Java-5.2.0). Comme C
et C++ sont installés dans LFS, cette page est soit pour mettre à
jour C et C++, ou pour installer des compilateurs supplémentaires.
Ce paquet est connu pour se construire correctement sur une
plateforme LFS-7.8.
Attention
Si vous mettez à jour depuis une version de GCC antérieure à 5.2.0, 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.
La version 5.1.0 de GCC introduit une modification incompatible
de l'ABI dans la bibliothèque C++ libstdc++.so
. Cela n'empêche pas l'utilisation
des programmes compilés avec la version précédente de
GCC , puisque les anciens et les
nouveaux symboles sont disponibles dans la bibliothèque. Mais à
la compilation, avec la nouvelle version, les programmes
utilisant les bibliothèques compilées avec l'ancienne version
peuvent donner des erreurs. Donc, si vous avez mis à jour depuis
une version inférieure à 5.1.0, vous avez deux solutions:
recompilez toutes les bibliothèques avec la nouvelle version, ou
utiliser l'option --with-default-libstdcxx-abi
dans configure.
Informations sur le paquet
Dépendances de GCC
Recommandées
DejaGnu-1.5.3 pour les tests
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/gcc
Installation de GCC
Important
Sauf si vous spécifiez des langages autre que C et C++ à la
commande ./configure dessous, processus
d'installation écrasera les compilateurs C et C++ et les
bibliothèques existants de GCC.
Avoir les paquets Tcl,
Expect et DejaGnu d'installés avant de commencer la
construction est hautement recommandé afin que vous puissiez
lancer la suite de tests complète.
Ne continuez pas avec 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://www.fr.linuxfromscratch.org/view/lfs-stable/chapter06/gcc.html).
Les instructions dessous utilisent intentionnellement le processus
« bootstrap ». Le bootstrap
est utile pour la robustesse et est fortement recommandé pour un
changement de version des compilateurs. Pour désactiver, passez
--disable-bootstrap
dans
les options ./configure ci-dessous.
Installez GCC en lançant les
commandes suivantes:
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-5.2.0/configure \
--prefix=/usr \
--disable-multilib \
--with-system-zlib \
--enable-languages=c,c++,fortran,go,objc,obj-c++ &&
make
Si vous avez installé des paquets supplémentaires comme
Valgrind et GDB, la partie de GCC de la suite de tests lancera plus de tests
que dans LFS. Certain d'entre eux signaleront des FAIL et d'autres
XPASS (passage quand échec attendu). Pour lancer les vérifications:
ulimit -s 32768 &&
make -k check
Les tests sont très longs, et les résultats peuvent être très
difficiles à trouver dans les logs, spécialment si vous utilisez
des travaux en parallèle avec make. Vous pouvez avoir un résumé des
tests avec:
../gcc-5.2.0/contrib/test_summary
Maintenant, en tant qu'utilisateur root
:
make install &&
mkdir -pv /usr/share/gdb/auto-load/usr/lib &&
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &&
chown -v -R root:root \
/usr/lib/gcc/*linux-gnu/5.2.0/include{,-fixed}
Quelques paquets veulent trouver le préprocesseur C dans
/lib
ou peuvent se référer au
compilateur C sous le nom de cc. Les liens symboliques
suivants ne sont pas utiles si vous avez suivi les instructions
LFS, depuis qu'ils sont déjà créés. Si vous ne les avez pas sur
votre système, tapez en tant qu'utilisateur root
:
ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc &&
install -v -dm755 /usr/lib/bfd-plugins &&
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/5.2.0/liblto_plugin.so /usr/lib/bfd-plugins/
Explication des commandes
mkdir ../gcc-build; cd
../gcc-build : La documentation de
GCC recommande de construire le
paquet dans un répertoire de construction dédié.
--disable-multilib
:
Ce paramètre assure que les fichiers sont créés pour l'architecture
spécifique à votre ordinateur.
--with-system-zlib
: Utilise
la version système de zlib au lieu
de la version fournie. zlib est
utilisé pour compresser et décompresser les langages intermédiares
de GCC dans les fichiers objets
LTO "(Link Time Optimization)".
--enable-languages=c,c++,fortran,go,objc,obj-c++
:
Cette commande identifie les langages à construire. Il se peut que
vous modifiez cette commande pour supprimer des langages non
désirés.
--with-default-libstdcxx-abi=c++98
:
Utilisez ce paramètre si vous mettez à jour depuis une version de
GCC inférieure à 5.1.0, et que
vous ne voulez pas recompiler toutes les biblitohèques écrites en
C++.
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-5.2.0/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.
mv -v /usr/lib/*gdb.py
...: Le processus d'installation mets quelques
fichiers utilisé par gdb sous le
répertoire /usr/lib
. Cela génère des
messages d'erreur curieux quand ldconfig est utilisé. cette
commande déplace les fichiers à un autre endroit.
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 du
répertoire include
installé sera
incorrect. Ces commandes modifient l'appartenance vers
l'utilisateur et le groupe root
.
Contenu
Plusieurs noms de programmes et de bibliothèques et des
descriptions ne sont pas listés ici, mais peuvent être trouvé dans
http://www.fr.linuxfromscratch.org/view/lfs-stable/chapter06/gcc.html#contents-gcc
depuis qu'ils sont initialement installés dans LFS.
Programmes installés:
gccgo, go, gofmt et gfortran, lié en dur
à des noms spécifiques à l'architecture
Bibliothèques installées:
libgfortran.{so,a}, libgo.{so,a},
libgobegin.a, libgolibbegin.a, libnetgo.a, libobjc.{so,a}, et
de nombreuses autres bibliothèques et exécutables dans
/usr/lib/gcc
, /usr/libexec/gcc
, et /usr/lib/go
Répertoires installés:
/usr/lib/gcc/<arch-triplet>/5.2.0/include/objc
et /usr/lib/go
Descriptions courtes
gccgo
|
est un compilateur basé sur GCC pour le langage
Go.
|
go
|
est un outil pour la gestion du code source Go.
|
gofmt
|
est un outil pour le formatage du code source
Go.
|
gfortran
|
est un compilateur basé sur GCC pour le langage
Fortran.
|
Last updated on : 2013-03-14 02:26:59 +010