5.6. Glibc-2.3.4

Le paquet Glibc contient la bibliothèque C principale. Cette bibliothèque fournit toutes les routines basiques pour allouer de la mémoire, rechercher des répertoires, ouvrir et fermer des fichiers, les lire et les écrire, gérer les chaînes, faire correspondre des modèles, faire de l'arithmétique et ainsi de suite.

Temps de construction estimé : 11,8 SBU
Espace disque requis : 454 Mo
Dépendances de l'installation : Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed et Texinfo

5.6.1. Installation de Glibc

Ce paquet est connu pour avoir des soucis quand les options d'optimisation par défaut (en incluant les options -march et -mcpu) sont modifiées. Donc, si des variables d'environnement qui surchargent les optimisations par défaut, telles que CFLAGS et CXXFLAGS, ont été définies, supprimez cette initialisation pour la construction de Glibc.

Il devrait être noté que compiler Glibc de toute autre façon que celle proposée par le livre compromet la stabilité du système.

Glibc échoue sur deux tests lorsque le noyau en cours d'exécution est le 2.6.11 ou ultérieures. Le problème est dû aux tests eux-mêmes et n'a rien à voir avec la bibliothèque C ou le noyau. Si vous planifiez d'exécuter la suite de tests, appliquez ce correctif :

patch -Np1 -i ../glibc-2.3.4-fix_test-1.patch

La documentation de Glibc recommande de construire Glibc en dehors du répertoire des sources, c'est-à-dire dans un répertoire dédié :

mkdir -v ../glibc-build
cd ../glibc-build

Ensuite, préparez la compilation de Glibc :

../glibc-2.3.4/configure --prefix=/tools \
    --disable-profile --enable-add-ons \
    --enable-kernel=2.6.0 --with-binutils=/tools/bin \
    --without-gd --with-headers=/tools/include \
    --without-selinux

Voici la signification des options de configure :

--disable-profile

Ceci construit les bibliothèques sans les informations de profilage. Enlevez cette option si le profilage sur les outils temporaires est nécessaire.

--enable-add-ons

Ceci indique à Glibc d'utiliser le composant NPTL comme bibliothèque de threads.

--enable-kernel=2.6.0

Ceci indique à Glibc de compiler la bibliothèque avec le support des noyaux 2.6.x.

--with-binutils=/tools/bin

Bien que pas nécessaire, ce commutateur nous assure qu'il ne reste aucune erreur provenant des programmes Binutils lors de la construction de Glibc.

--without-gd

Ce commutateur empêche la construction du programme memusagestat, programme qui insiste pour être lié avec les bibliothèques de l'hôte (libgd, libpng, libz et ainsi de suite).

--with-headers=/tools/include

Ceci indique à Glibc de se compiler lui-même avec les en-têtes récemment installés dans le répertoire des outils, de façon à ce qu'il sache exactement de quelles fonctionnalités disposent le noyau et qu'il puisse s'optimiser correctement.

--without-selinux

Lors de la construction à partir d'hôtes qui incluent la fonctionnalité SELinux (par exemple Fedora Core 3), Glibc construira le support pour SELinux. Comme l'environnement d'outils LFS ne contient pas de support pour SELinux, une Glibc compilée avec ce support ne fonctionnera pas correctement.

Lors de cette étape, le message d'avertissement suivant peut apparaître :

configure: WARNING:
*** These auxiliary programs are missing or 
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

Le programme msgfmt, manquant ou incompatible, ne pose généralement pas de problème mais certaines personnes pensent qu'il peut poser problème lors de l'exécution de la suite de tests. Ce programme msgfmt fait partie du paquet Gettext que la distribution hôte devrait fournir. Si msgfmt est présent mais semble incompatible, mettez à jour le paquet Gettext du système hôte ou continuez sans et voyez si la suite de tests continue son exécution sans problèmes.

Compilez le paquet :

make

La compilation est maintenant terminée. Comme dit plus tôt, lancer les suites de tests pour les outils temporaires de ce chapitre n'est pas nécessaire. Pour exécuter la suite de tests Glibc, si désiré, lancer la commande suivante :

make check

Pour une discussion sur les échecs de tests qui ont une importance particulière, merci de voir Section 6.11, « Glibc-2.3.4. »

Dans ce chapitre, certains tests peuvent être perturbés par des outils existants ou par des problèmes d'environnement sur le système hôte. Les échecs de la suite de tests de Glibc dans ce chapitre ne portent typiquement pas à conséquence. La bibliothèque Glibc installée dans Chapitre 6 est celle qui sera utilisée à la fin, donc c'est celle qui aura besoin de passer la plupart des tests (y compris dans Chapitre 6, certains échecs pourraient survenir, par exemple celui des mathématiques).

Si vous expérimentez un échec, prenez-en note puis continuez en ré-exécutant la commande make check. La suite de tests devrait reprendre là où elle a quitté précédemment. Cette séquence d'arrêt/relancement est annulée en lançant la commande make -k check. En utilisant cette option, assurez-vous de tracer la sortie pour que le journal des traces puisse être examiné plus tard pour les différents échecs.

L'étape d'installation de Glibc affichera un message d'avertissement sans conséquence pour l'absence de /tools/etc/ld.so.conf. Supprimez ce message avec :

mkdir -v /tools/etc
touch /tools/etc/ld.so.conf

Installez le paquet :

make install

Différents pays et cultures ont des conventions variables sur la façon de communiquer. Ces conventions vont du très simple, telle que la représentation de la date et de l'heure à du très compliqué, telle que le langage parlé. L'internationalisation des programmes GNU fonctionne en utilisant les locales.

[Note]

Note

Si les suites de tests ne seront pas exécutés dans ce chapitre (suivant ainsi notre recommandation), il y a peu d'intérêts à installer les locales maintenant. Les bonnes locales seront installées dans le chapitre suivant.

Néanmoins, pour installer les locales Glibc, utilisez la commande suivante :

make localedata/install-locales

Pour gagner du temps, une alternative au lancement de la commande précédente (qui génère et installe chaque locale que Glibc connaît) est d'installer seulement les locales voulues et nécessaires. Ceci peut se faire en utilisant la commande localedef. Des informations sur cette commande sont situées dans le fichier INSTALL des sources de Glibc. Néanmoins, il existe un certain nombre de locales essentielles pour réussir les tests des futurs paquets, en particulier les tests de libstdc++ pour GCC. Les instructions suivantes installeront l'ensemble minimale de locales nécessaires pour que les tests réussissent :

mkdir -pv /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP

Les détails sur ce paquet sont situés dans Section 6.11.4, « Contenu de Glibc. »