10.7. Glibc-2.7 32 Bit Libraries

Le paquet Glibc 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.7.1. Installation de Glibc

[Note]

Note

Certains paquets non compris dans CLFS suggèrent d'installer GNU libiconv pour traduire les données d'un encodage en un autre. La page d'accueil du projet (http://www.gnu.org/software/libiconv/) précise que “Cette bibliothèque fournit une implémentation de iconv() à utiliser sur les systèmes qui n'en disposent pas ou dont l'implémentation ne convertit pas l'Unicode.” Glibc fournit une implémentation d'iconv() et peut convertir de l'Unicode, du coup libiconv n'est pas requis sur un système CLFS.

Le système de construction de la Glibc 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 Glibc parce que les tests d'autoconf de Glibc donneraient alors des résultats faussés, défaussant ainsi notre but d'achever une construction propre.

Les correctifs suivants incorporent toutes les mises à jour issues de la branche 2.7 des développeurs de Glibc :

patch -Np1 -i ../glibc-2.7-branch_update-1A.patch

Le correctif suivant corrige un problème qui peut causer des erreurs de segmentation à l'exécution de localdef :

patch -Np1 -i ../glibc-2.7-localedef_segfault-1.patch

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

mkdir -v ../glibc-build
cd ../glibc-build

Préparez la compilation de Glibc :

CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" \
    CFLAGS="-march=$(cut -d- -f1 <<< ${CLFS_TARGET32}) \
    -mtune=generic -g -O2" ../glibc-2.7/configure --prefix=/usr \
    --disable-profile --enable-add-ons --enable-kernel=2.6.0 \
    --libexecdir=/usr/lib/glibc --host=${CLFS_TARGET32}

Voici la signification de la nouvelle option de configure :

--libexecdir=/usr/lib/glibc

Ceci change l'emplacement du programme pt_chown de celui par défaut /usr/libexec vers /usr/lib/glibc.

Compilez le paquet :

make
[Important]

Important

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

In multilib, we tend to think that compiling for ${CLFS_TARGET32} is not cross-compiling. Glibc takes the traditional view that if you are building for a different host then you are cross-compiling, so you won't be running the tests and therefore you don't need the locale files. When we run the tests, many will fail if the locale files are missing. The following sed allows these tests to succeed:

sed -i '/cross-compiling/s@ifeq@ifneq@g' ../glibc-2.7/localedata/Makefile

Testez les résultats :

make -k check >glibc-check-log 2>&1 ; grep Error glibc-check-log

La suite de tests Glibc 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 de Glibc 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.

Bien que ce ne soit qu'un simple message, l'étape d'installation de Glibc se plaindra de l'absence de /etc/ld.so.conf. Supprimez ce message d'avertissement avec :

touch /etc/ld.so.conf

Installez le paquet :

make install

Les détails sur ce paquet sont disponibles dans Section 10.8.5, “Contenu de Glibc.”