Glibc-2.3.3-lfs-5.1

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 approximatif :  11,8 SBU
Espace disque requis :                734,2 Mo

L'installation de Glibc dépend de Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Installation de Glibc

Ce paquet est connu pour mal se comporter si vous changez les options d'optimisation par défaut (en incluant les options -march et -mcpu). Donc, si vous avez défini des variables d'environnement qui surchargent les optimisations par défaut, telles que CFLAGS et CXXFLAGS, nous vous recommandons de supprimer cette initialisation lors de la construction de Glibc.

Basiquement, compiler Glibc de tout autre façon que celle proposée par le livre compromet la stabilité de votre système.

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 ../glibc-build
cd ../glibc-build

Ensuite, préparez la compilation de Glibc :

../glibc-2.3.3-lfs-5.1/configure --prefix=/tools \
    --disable-profile --enable-add-ons=linuxthreads \
    --with-binutils=/tools/bin --with-headers=/tools/include \
    --without-gd --without-cvs

Voici la signification des options de configure :

  • --disable-profile : ceci désactive la construction des bibliothèques avec les informations de profilage. Enlevez cette option si vous pensez faire du profilage sur les outils temporaires.

  • --enable-add-ons : ceci active tous les composants supplémentaires installés avec Glibc, dans notre cas Linuxthreads.

  • --with-binutils=/tools/bin et --with-headers=/tools/include : ces options ne sont réellement pas nécessaires. Mais elles nous assurent que rien de mauvais ne peut arriver en ce qui concerne les en-têtes du noyau et que les programmes Binutils sont utilisés lors de la construction de Glibc.

  • --without-gd : cette option empêche la construction du programme memusagestat car, de façon assez étrange, celui-ci insiste pour être lié avec les bibliothèques de l'hôte (libgd, libpng, libz et ainsi de suite).

  • --without-cvs : ceci empêche les Makefiles de lancer des récupérations automatiques du CVS lors de l'utilisation d'une version CVS. Mais, ce n'est plus nécessaire de nos jours. Nous l'utilisons parce qu'il supprime un message d'avertissement ennuyant, mais sans risque, sur un programme autoconf manquant.

Lors de cette étape, vous rencontrerez peut-être le message suivant :

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.

Compilez le paquet :

make AUTOCONF=no

La compilation est maintenant terminée. Comme dit plus tôt, nous ne recommandons pas de lancer les suites de tests pour le système temporaire de ce chapitre. Si vous souhaitez malgré tout lancer la suite de tests Glibc, la commande suivante devrait le faire :

make check

La suite de tests de Glibc est grandement dépendante de certaines fonctionnalités de votre système hôte, en particulier du noyau. De plus, dans ce chapitre, certains tests peuvent être affecter durement par les outils existants ainsi que par des problèmes d'environnement sur le système hôte. Bien sûr, ceci ne sera plus un problème lorsque nous lançerons la suite de tests de Glibc dans l'environnement chroot au cours du Chapitre 6. En général, la suite de tests de Glibc réussit. Néanmoins, comme mentionné ci-dessus, quelques échecs sont inévitables sous certaines circonstances. Voici une liste des problèmes rencontrés communément :

  • Le test math échoue parfois lorsqu'il est exécuté sur des systèmes où le processeur n'est pas un nouveau Intel ou AMD. Certains paramètrages d'optimisation sont aussi connus pour être la source de ce type de problèmes.

  • Le test gettext échoue quelque fois à cause de problèmes sur le système hôte. Les raisons exactes ne sont pas encore claires.

  • Le test atime échoue quelque fois lorsque la partition LFS est montée avec l'option noatime ou à cause d'autres spécificités des autres systèmes de fichiers.

  • Le test shm pourrait échouer si le système hôte utilise le système de fichiers devfs mais ne dispose pas du système de fichiers tmpfs monté sur /dev/shm à cause d'un manque de support de tmpfs dans le noyau.

  • En cas d'exécution sur d'anciens matériels (lents), certains tests pourraient échouer à cause d'une limite de temps dépassée.

En résumé, ne vous inquiétez pas trop si vous apercevez des échecs dans la suite de tests de Glibc pour ce chapitre. La Glibc dans le Chapitre 6 est celle que nous finirons par utiliser, donc c'est celle que nous voudrons réellement voir réussir les tests (mais même là, quelques erreurs pourraient survenir, les tests math par exemple). Après un échec, notez-le puis continuez en relançant la commande make check. La suite de tests devrait recommancer là où elle s'était arrêtée. Vous pouvez empêcher cette séquence en lançant make -k check. Mais si vous faites cela, assurez-vous de conserver une trace des sorties pour que vous puissiez les consulter et examiner le nombre total d'échecs.

Bien qu'il s'agisse d'un message sans conséquence, l'étape d'installation de la Glibc se plaindra à la fin de l'absence de /tools/etc/ld.so.conf. Bloquez ce message avec :

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

Maintenant, 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 vous ne lancez pas les suites de tests dans ce chapitre suivant notre recommandation, il y a peu d'intérêts à installer les locales maintenant. Nous installerons les locales dans le chapitre suivant.

Si vous souhaitez tout de même installer les locales Glibc, la commande suivante devrait le faire :

make localedata/install-locales

Une alternative au lancement de la commande précédente est d'installer uniquement les locales dont vous avez besoin ou que vous souhaitez. Ceci est possible en utilisant la commande localedef. Des informations sur cette commande sont disponibles dans le fichier INSTALL dans les 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++ provenant de GCC. Les instructions suivantes, au lieu de la cible install-locales comme ci-dessus, installent l'ensemble minimum de locales nécessaires à la bonne réussite des tests :

mkdir -p /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 disponibles dans la section intitulée « Contenu de Glibc ».