Installer Glibc-2.3.2

Estimation du temps de construction :   11,8 SBU
Estimation de l'espace disque requis :  800 Mo

Contenu de Glibc

(Dernière vérification effectuée auprès de la version 2.3.2.)

Glibc est une bibliothèque C qui apporte les appels système et les fonctions de base telles que open, malloc, printf, etc. La bibliothèque C est utilisée par tous les programmes liés dynamiquement.

Programmes installés : catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump et zic

Bibliothèques installées : ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so et libutil.[a,so]

Dépendances d'installation de Glibc

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

Installation de Glibc

Avant de commencer l'installation de la Glibc, vous devez entrer (cd) dans le répertoire glibc-2.3.2 et déballer Glibc-linuxthreads dans ce répertoire, et non pas dans le répertoire où vous déballez habituellement tous les sources.

Note : Nous allons lancer la suite de tests pour Glibc dans ce chapitre. Néanmoins, il est important de noter que lancer la suite de tests Glibc ici n'est pas considéré comme étant aussi important que dans le chapitre 6.

Ce package 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 pas 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.

Bien qu'il s'agisse d'un message sans gravité, l'étape d'installation de Glibc se plaindra de l'absence de /tools/etc/ld.so.conf. Corrigez ce petit message ennuyant avec :

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

De même, Glibc a un problème subtil s'il est compilé avec GCC 3.3.1. Appliquez le correctif suivant pour corriger ceci :

patch -Np1 -i ../glibc-2.3.2-sscanf-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 ../glibc-build
cd ../glibc-build

Ensuite, préparez la compilation de Glibc :

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

La signification des options de configure est :

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 package :

make

Lancez la suite de tests :

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 les plus communs que nous connaissons :

En résumé, ne vous inquiétez pas trop si vous voyez des échecs lors des tests de la Glibc dans ce chapitre. La Glibc au chapitre 6 est celle avec qui nous allons rester, donc c'est celle-ci pour qui les tests doivent réussir. Mais gardez en tête, y compris au chapitre 6 que certaines erreurs peuvent arriver, les tests de math par exemple. Si vous essuyez un échec, notez-le puis essayez de relancer make check. La suite de tests devrait reprendre là où elle s'était arrêtée. Vous pouvez passer cette séquence arrêt-relancement en lançant un make -k check. Mais en faisant cela, assurez-vous de sauvegarder la sortie pour que vous puissiez examiner les traces plus tard et savoir ainsi le nombre total d'échecs.

Maintenant, installez le package :

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. Nous installons les locales Glibc maintenant :

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 des sources glibc-2.3.2. Néanmoins, il existe un certain nombre de locales essentielles pour réussir les tests des futurs packages, 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 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