Les détails sur ce paquet sont disponibles dans Section 10.8.5, “Contenu de Glibc.”
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.
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
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.”