5.16. EGLIBC-2.15

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.

5.16.1. Installation of EGLIBC

Remarquez que toute autre méthode de construction 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:

cp -v Makeconfig{,.orig}
sed -e 's/-lgcc_eh//g' Makeconfig.orig > Makeconfig

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

Vous devez ajouter les lignes suivantes à config.cache pour qu'EGLIBC supporte NPTL :

cat > config.cache << "EOF"
libc_cv_forced_unwind=yes
libc_cv_c_cleanup=yes
libc_cv_sparc64_tls=yes
libc_cv_gnu89_inline=yes
libc_cv_ssp=no
EOF

Préparez la compilation d'EGLIBC :

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

Voici la signification des options de configure :

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

Force EGLIBC à compiler en utilisant le GCC de notre architecture cible avec des drapeaux 64 bits.

--libdir=/tools/lib64

Installe EGLIBC dans /tools/lib64 plutôt que dans /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ênant. Ce programme msgfmt fait partie du paquet Gettext que la distribution hôte devrait fournir.

Compilez le paquet :

make

Installez le paquet :

make install inst_vardbdir=/tools/var/db

Installez les en-têtes liées à NIS et RPC qui ne sont pas installées par défaut.

cp -v ../eglibc-2.15/sunrpc/rpc/*.h /tools/include/rpc
cp -v ../eglibc-2.15/sunrpc/rpcsvc/*.h /tools/include/rpcsvc
cp -v ../eglibc-2.15/nis/rpcsvc/*.h /tools/include/rpcsvc

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

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

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