5.7. Glibc-2.10.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 estimé : 6.9 SBU
Espace disque requis : 371 Mio

5.7.1. Installation de Glibc

Corrigez une erreur dans les constantes passées au système futex et appelées dans certains cas, aboutissant à l'échec de certaines opérations pthread_mutex :

cp -v nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S{,.orig}
sed -e 's/FUTEX_WAIT\( | FUTEX_CLOCK_REALTIME, reg\)/FUTEX_WAIT_BITSET\1/' \
        <nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S.orig \
        >nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S

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

Glibc ne supportant plus i386, ses développeurs disent d'utiliser le commutateur du compilateur -march=i486 lorsqu'on le compile pour des machines x86. On peut faire cela de plusieurs manières, mais des tests montrent que la meilleure place pour le commutateur est à l'intérieur de la variable de compilation « CFLAGS ». Au lieu de remplacer entièrement ce que le système de compilation interne de Glibc utilise pour CFLAGS, ajoutez le nouveau commutateur au contenu existant de CFLAGS en utilisant le fichier spécial configparms. Le commutateur -mtune=native est également requis pour réinitialiser une valeur raisonnable pour -mtune, laquelle est modifiée lors du paramétrage de -march.

case `uname -m` in
  i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
esac

Ensuite, préparez la compilation de Glibc :

../glibc-2.10.1/configure --prefix=/tools \
    --host=$LFS_TGT --build=$(../glibc-2.10.1/scripts/config.guess) \
    --disable-profile --enable-add-ons \
    --enable-kernel=2.6.18 --with-headers=/tools/include \
    libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes

Voici la signification des options de configure :

--host=$LFS_TGT, --build=$(../glibc-2.10.1/scripts/config.guess)

L'effet combiné de ces commutateurs est que le système de construction de Glibc se configure pour se compiler de manière croisée en 1tilisant l'éditeur de liens croisé et le compilateur croisé dans /tools.

--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.18

Ceci indique à Glibc de compiler la bibliothèque avec le support des noyaux Linux 2.6.18 et supérieurs. Les environnements pour des noyaux plus anciens ne sont pas activés.

--with-headers=/tools/include

Ceci dit à Glibc de se compiler contre les en-têtes récemment installées dans le répertoire tools, afin qu'il connaisse exactement les fonctionnalités du noyau et puisse s'optimiser en conséquence.

libc_cv_forced_unwind=yes

La construction exige le support pour défilement (unyind) forcé mais comme il est compilé de manière croisée, il ne peut pas s'autodétecter. L'initialisation de cette vahiable sur la ligne de commande dit explicitement au script configure que le support est disponible.

libc_cv_c_cleanup=yes

La construction exige la gestion du support pour le nettoyage (cleanup) C qu'il ne peut détecter automatiquement lorsqu'il est compilé de manière croisée. L'active explicitement.

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. 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

Ce paquet est fourni avec une suite de test, cependant vous ne pouvez pas l'exécuter à ce moment car nous n'avons pas encore de compilateur C++.

[Remarque]

Remarque

La suite de tests exige aussi que des données de locale soient installées afin de s'exécuter avec succès. Les données de locale fournissent au szstème des informations la cate, l'heure et les formats normaux acceptés et fournis par les outils systèmes. 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 les instructions de la section Section 6.9, « Glibc-2.10.1. »

Installez le paquet :

make install

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