Contenu
Plusieurs noms de programmes et de bibliothèques et des descriptions ne sont pas listés ici, mais peuvent être trouvé dans ../../../../lfs/view/8.0/chapter06/gcc.html#contents-gcc puisqu'ils sont initialement installés dans LFS.
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 prérequis spécifiques, donc ils sont décrits dans des pages séparées (GCC-Ada-6.3.0 et GCC-Java-6.3.0). Comme C et C++ sont installés dans LFS, cette page est soit pour mettre à jour C et C++, soit pour installer des compilateurs supplémentaires.
Ce paquet est connu pour se construire correctement sur une plateforme LFS-8.0.
Si vous mettez à jour depuis une version de GCC antérieure à 6.3.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 soient 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
utilisez l'option --with-default-libstdcxx-abi
dans configure.
Téléchargement (HTTP) : http://ftpmirror.gnu.org/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
Téléchargement (FTP) : ftp://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
Somme de contrôle MD5 du téléchargement : 677a7623c7ef6ab99881bc4e048debb6
Taille du téléchargement : 95 Mo
Estimation de l'espace disque requis : 7.7 Go (avec les tests)
Estimation du temps de construction : 58 SBU (avec les tests et parallélisme=4)
DejaGnu-1.6 pour les tests
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/gcc
Même si vous ne spécifiez que des langages autres que C et C++ à la commande ./configure ci-dessous, le processus d'installation écrasera les compilateurs C et C++ et les bibliothèques existantes 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 tests avec ceux qui se trouvent sur http://gcc.gnu.org/ml/gcc-testresults/. Il se peut que vous vouliez également vous référer aux informations qui se trouvent dans la section GCC du chapitre 6 du livre LFS (../../../../lfs/view/8.0/chapter06/gcc.html).
Les instructions ci-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 le désactiver,
passez --disable-bootstrap
dans les options ./configure ci-dessous.
Installez GCC en lançant les commandes suivantes :
case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 ;; esac mkdir build && cd build && ../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. Certains d'entre eux signaleront des FAIL et d'autres XPASS (passage alors qu'un échec était 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, en particulier si vous utilisez des travaux en parallèle avec make. Vous pouvez avoir un résumé des tests avec :
../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/6.3.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, puisqu'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)/6.3.0/liblto_plugin.so /usr/lib/bfd-plugins/
mkdir build; cd 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édiaires 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=gcc4-compatible
:
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 bibliothèques écrites en
C++.
ulimit -s 32768 : Cette commande empêche plusieurs scripts de tomber à court d'espace dans la pile.
make -k check : Cette commande lance une suite de tests sans s'arrêter si une erreur est rencontrée.
../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 une 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 met quelques
fichiers utilisé par gdb dans 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
.
Plusieurs noms de programmes et de bibliothèques et des descriptions ne sont pas listés ici, mais peuvent être trouvé dans ../../../../lfs/view/8.0/chapter06/gcc.html#contents-gcc puisqu'ils sont initialement installés dans LFS.
Last updated on 2017-02-22 18:52:51 +0100