5.7. Glibc-2.29

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: 5.1 SBU
Espace disque requis: 885 Mo

5.7.1. Installation de Glibc

La documentation de Glibc recommande de construire Glibc dans un répertoire dédié :

mkdir -v build
cd       build

Ensuite, préparez la compilation de Glibc :

../configure                             \
      --prefix=/tools                    \
      --host=$LFS_TGT                    \
      --build=$(../scripts/config.guess) \
      --enable-kernel=3.2                \
      --with-headers=/tools/include

Voici la signification des options de configure :

--host=$LFS_TGT, --build=$(../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 utilisant l'éditeur de liens croisé et le compilateur croisé dans /tools.

--enable-kernel=3.2

Ceci indique à Glibc de compiler la bibliothèque avec le support des noyaux Linux 3.2 et supérieurs. Les contournements pour les 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és dans le répertoire tools, afin qu'il connaisse exactement les fonctionnalités du noyau et puisse s'optimiser en conséquence.

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.

[Note]

Note

Il a été reporté que ce paquet pouvait échouer lors de "make parallèles". Si cela arrive, relancer la commande avec l'option "-j1".

Compilez le paquet :

make

Installez le paquet :

make install
[Attention]

Attention

À ce moment, il est impératif de vous arrêter et de vous assurer que les fonctions de base (compilation et édition des liens) du nouvel ensemble d'outils fonctionnent comme prévu. Pour effectuer un test de propreté, lancez les commandes suivantes :

echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'

Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs et la sortie de la dernière commande sera de la forme :

[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]

Notez que pour les machines 32 bits, le nom de l'interpréteur sera /tools/lib/ld-linux.so.2.

Si l'affichage diffère ou s'il n'y a aucun affichage, alors quelque chose ne se passe pas bien. Enquêtez et tracez vos étapes pour trouver où se cache le problème et comment le corriger. Ce problème doit être corrigé avant de continuer.

Une fois que tout va bien, nettoyez les fichiers de test ::

rm -v dummy.c a.out
[Note]

Note

La construction de Binutils dans deux sections servira de test supplémentaire pour vérifier que l'ensemble d'outils a été construit correctement. Si Binutils échoue pour se construire, c'est une indication que quelque chose ne va pas dans les installations précédentes de Binutils, GCC, ou Glibc.

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