10.8. EGLIBC-2.15 N32

Le paquet EGLIBC contient la bibliothèque C principale. Cette bibliothèque fournit toutes les routines de base pour allouer de la mémoire, rechercher dans des répertoires, ouvrir et fermer des fichiers, les lire et les écrire, gérer les chaînes, faire de la recherche de motifs, faire de l'arithmétique etc.

10.8.1. Installation of EGLIBC

À la fin de l'installation, le système de construction exécutera un test de propreté pour s'assurer que tout s'est installé correctement. Ce script essaiera de tester la présence d'une bibliothèque utilisée uniquement pour la suite de tests, et elle n'est jamais installée. Empêchez le script de tester la présence de cette bibliothèque avec la commande suivante :

sed -i 's/\(&& $name ne\) "db1"/ & \1 "nss_test1"/' scripts/test-installation.pl

Ce même script effectue ses tests en essayant de compiler des programmes de test contre certaines bibliothèques. Cependant, il ne spécifie pas le ld.so, or notre ensemble d'outils est configuré pour utiliser celui de /tools. L'ensemble de commandes suivant obligera le script à utiliser le chemin complet du nouveau ld.so qu'on vient d'installer :

LINKER=$(readelf -l /tools/bin/bash | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p')
sed -i "s|libs -o|libs -L/usr/lib32 -Wl,-dynamic-linker=${LINKER} -o|" \
  scripts/test-installation.pl
unset LINKER

Le correctif suivant corrige un problème qui peut faire planter ALSA :

patch -Np1 -i ../eglibc-2.15-fixes-1.patch

Le système de construction d'EGLIBC est autosuffisant et s'installe parfaitement, même si notre fichier specs pour le compilateur et l'éditeur de liens pointent toujours vers /tools. Les specs et l'éditeur de liens ne peuvent pas être ajustés avant l'installation de la EGLIBC parce que les tests d'autoconf d'EGLIBC donneraient alors des résultats faussés, défaussant ainsi notre but d'achever une construction propre.

MIPS is not supported in the main EGLIBC tree, so we need the eglibc-ports tarball. Unpack eglibc-ports-2.15-r21467:

tar -xvf ../eglibc-ports-2.15-r21467.tar.xz

The following will cause EGLIBC to use an absolute path to the ldd-rewrite-script instead of a relative path:

cp -v config.make.in{,.orig}
sed '/ldd-rewrite-script/s:@:${objdir}/&:' config.make.in.orig > config.make.in

La documentation d'EGLIBC recommande de construire EGLIBC en dehors du répertoire des sources dans un répertoire de construction dédié :

mkdir -v ../eglibc-build
cd ../eglibc-build

Tell EGLIBC to install its 32-bit libraries into /lib32:

echo "slibdir=/lib32" >> configparms

Préparez la compilation d'EGLIBC :

CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" \
    ../eglibc-2.15/configure --prefix=/usr \
    --disable-profile --enable-kernel=2.6.32 \
    --libexecdir=/usr/lib32/eglibc --libdir=/usr/lib32

The meaning of the new configure option:

--libexecdir=/usr/lib32/eglibc

This changes the location of the pt_chown program from its default of /usr/libexec to /usr/lib32/eglibc.

Compilez le paquet :

make
[Important]

Important

La suite de tests d'EGLIBC est considérée comme critique. Ne la sautez sous aucun prétexte.

Testez les résultats :

cp -v ../eglibc-2.15/iconvdata/gconv-modules iconvdata
make -k check 2>&1 | tee eglibc-check-log; grep Error eglibc-check-log

La suite de tests EGLIBC est très dépendante de certaines fonctions du système hôte, en particulier du noyau. Normalement, le test posix/annexc échoue et vous devriez voir Error 1 (ignored) dans la sortie. Excepté cela, la suite de tests d'EGLIBC devrait toujours passer. Néanmoins, dans certaines circonstances, certains échecs sont inévitables. Si un test échoue à cause d'un programme manquant (ou d'un lien symbolique manquant), ou du fait d'une erreur de segmentation, vous verrez un code d'erreur supérieur à 127 et les détails seront dans le journal. De manière plus générale, les tests échoueront avec Error 2 - pour eux le contenu du fichier .out, comme posix/annexc.out peut vous donner des informations. Voici une liste des problèmes les plus fréquents :

  • Les tests math échouent quelque fois. Certaines optimisations sont connues pour être une cause de cela.

  • Si vous avez monté la partition CLFS avec l'option noatime, le test atime échouera. Comme mentionné dans Section 2.4, “Monter la nouvelle partition”, n'utilisez pas l'option noatime lors de la construction de CLFS.

  • Lors d'une exécution sur un matériel ancien et lent, quelques tests peuvent échouer à cause de délais dépassés.

Installez le paquet :

make install

Details on this package are located in Section 10.9.5, “Contenu d'EGLIBC.”