5.9. Glibc-2.7

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.

5.9.1. Installation de Glibc

Notez que toute autre méthode de construire Glibc que celle suggérée dans ce livre met en péril la stabilité du système.

Désactivez l'édition d'un lien vers libgcc_eh:

patch -Np1 -i ../glibc-2.7-libgcc_eh-1.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

Vous devez ajouter les lignes suivantes à config.cache pour que Glibc supporte NPTL :

echo "libc_cv_forced_unwind=yes" > config.cache
echo "libc_cv_c_cleanup=yes" >> config.cache
echo "libc_cv_sparc64_tls=yes" >> config.cache

Préparez la compilation de Glibc :

BUILD_CC="gcc" CC="${CLFS_TARGET}-gcc ${BUILD64}" \
    AR="${CLFS_TARGET}-ar" RANLIB="${CLFS_TARGET}-ranlib" \
    ../glibc-2.7/configure --prefix=/tools \
    --host=${CLFS_TARGET} --build=${CLFS_HOST} \
    --disable-profile --enable-add-ons \
    --with-tls --enable-kernel=2.6.0 --with-__thread \
    --with-binutils=/cross-tools/bin --with-headers=/tools/include \
    --cache-file=config.cache

The meaning of the new configure options:

CC="${CLFS_TARGET}-gcc ${BUILD64}"

Forces Glibc to build using our target architecture GCC utilizing the 64 Bit flags.

--libdir=/tools/lib64

Puts Glibc into /tools/lib64 instead of /tools/lib.

Pendant cette étape, il se pourrait que les avertissements suivants apparaissent :

configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

L'absence ou l'incompatibilité du programme msgfmt n'est en général pas gênante. Ce programme msgfmt fait partie du paquet Gettext que la distribution hôte devrait fournir.

Compilez le paquet :

make

Installez le paquet :

make install

The stubs.h header installed by glibc looks for stubs-32.h and stubs-64.h. This configuration of glibc only generates stubs-64.h. Fix this with the following:

mv -v /tools/include/gnu/stubs{-64,}.h

Les détails sur ce paquet sont situés dans Section 10.7.5, “Contenu de Glibc.”