Cette section couvre l'installation de glibc2 comme bibliothèque C principale. Tous les nouveaux programmes que vous compilerez seront liés avec cette bibliothèque, sauf si vous utilisez des options de compilation spéciales pour le lier avec une autre version.
Si vous utilisez Redhat ou Debian et avez chargé les fichier rpm ou deb adéquats, voyez les instructions d'installation Redhat ou Debian. Vous pourrez alors sauter cette section.
Cette section explique comment compiler glibc 2 et ses extensions à partir des sources. Vous devez compiler la bibliothèque si vous voulez changer les options d'optimisation ou de configuration ou utiliser un paquetage pour lequel vous n'avez pas de binaire.
Sur un i586 à 133 MHz avec 64 Mo de RAM, il faut environ trois heures pour compiler toutes les bibliothèques avec les extensions. Sur un i686 à 200 MHz chargé, il faut environ une demi-heure.
Vous devez extraire les sources des archives pour compiler. La meilleure façon de le faire est ainsi :
tar xzf glibc-2.0.5.tar.gz
cd glibc-2.0.5
cat ../glibc-2.0.5-2.0.5c.diff.gz | gzip -d | patch -p0
tar xzf ../glibc-linuxthreads-2.0.5.tar.gz
tar xzf ../glibc-crypt-2.0.5.tar.gz
tar xzf ../glibc-localedata-2.0.5.tar.gz
Ceci mettra les répertoires linuxthreads, crypt et localedata dans le répertoire glibc-2.0.5 où configure pourra trouver ces extensions.
Dans le répertoire glibc-2.0.5, créez un répertoire nommé compile, et allez dedans. Tout le travail sera fait dans ce répertoire, ce qui simplifiera le nettoyage. (Les développeurs n'ont pas vraiment pensé à parfaire le 'make clean' pour l'instant.)
mkdir compile
cd compile
Lancez ../configure. Pour utiliser les paquetages supplémentaires, vous devez les spécifier avec --enable-add-ons, comme --enable-add-ons=linuxthreads,crypt,localedata. Vous devrez aussi sûrement spécifier les chemins où elle sera installée. Pour coller aux distributions Linux normales, spécifiez --prefix=/usr. (Quand on spécifie le préfixe /usr sur un système Linux, configure sait ajuster les autres chemins pour placer libc.so et d'autres bibliothèques importantes dans /lib.) La ligne de commande complète de configure serait :
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr
Pour compiler et vérifier, lancez :
make
make check
Vous devez maintenant déplacer certains fichiers pour vous préparer à l'arrivée de la nouvelle bibliothèque, que vous l'installiez à partir des sources ou de binaires. Tous les nouveaux programmes compilés seront liés à glibc, mais les vieux programmes qui ne sont pas liés en statique dépendront encore de libc 5, et vous ne pouvez donc pas écraser l'ancienne version.
mkdir -p /usr/i486-linuxlibc5/lib
mv /usr/include /usr/i486-linuxlibc5/include
mkdir /usr/include
ln -s /usr/src/linux/include/linux /usr/include/linux
ln -s /usr/src/linux/include/asm /usr/include/asm
ln -s /usr/X11R6/include/X11 /usr/include/X11
ln -s /usr/lib/g++-include /usr/include/g++
Les liens devront être ajustés au besoin selon votre
distribution. Rien que la Slackware installe les en-têtes g++ dans
/usr/local/g++-include, alors que Debian met les en-têtes dans
/usr/include/g++, et fait un lien de /usr/lib/g++-include vers
/usr/include/g++. Dans d'autres cas, vous voudrez sûrement déplacer le
répertoire d'en-têtes g++ d'origine à son ancien emplacement
/usr/include.
mv /usr/lib/libbsd.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libc.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libgmon.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libm.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libmcheck.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libc.so /usr/i486-linuxlibc5/lib
mv /usr/lib/libm.so /usr/i486-linuxlibc5/lib
cp /lib/libm.so.5.* /usr/i486-linuxlibc5/lib
cp /lib/libc.so.5.* /usr/i486-linuxlibc5/lib
libm.so.5 et libc.so.5 doivent être copiées et non déplacées si /usr
est une partition différente de /, parce qu'elles sont nécessaires aux
programmes utilisés pour démarrer Linux et doivent être situées sur la
partition root.
mv /usr/lib/crt1.o /usr/i486-linuxlibc5/lib
mv /usr/lib/crti.o /usr/i486-linuxlibc5/lib
mv /usr/lib/crtn.o /usr/i486-linuxlibc5/lib
mv /usr/lib/gcrt1.o /usr/i486-linuxlibc5/lib
ldconfig -v
Si vous installez glibc à partir de binaires précompilés, vous devez :
cd /
gzip -dc glibc-2.0.bin.i386.tar.gz | tar tvvf -
gzip -dc glibc-crypt-2.0.bin.i386.tar.gz | tar tvvf -
ldconfig -v
Si vous avez une architecure ou une version différentes, substituez les noms de fichiers adéquats.
Pour installer la bibliothèque à partir des sources, lancez :
make install
ldconfig -v
L'étape finale de l'installation (à la fois pour les installations binaires et sources) est de mettre à jour le fichier specs de gcc pour que vous puissiez lier vos programmes proprement. Pour déterminer quel fichier specs est utilisé par gcc, lancez :
% gcc -v
reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
Dans ce cas, i486-unknown-linux est le système, et 2.7.2.2 est la version. Vous devez copier /usr/lib/gcc-lib/<système> dans l'ancien répertoire système :
cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxlibc5
Allez dans le répertoire d'origine et dans le répertoire de version
cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2
et éditez le fichier 'specs' que vous y trouverez. Dans ce fichier,
changez /lib/ld-linux.so.1 en /lib/ld-linux.so.2. Vous devrez aussi
enlever toutes les expressions %{...:-lgmon}
de ce fichier,
puisque glibc n'utilise pas la bibliothèque gmon pour les
optimisations. Un fichier specs d'exemple se trouve dans la section
fichiers specs d'exemple
.
Pour tester l'installation, créez le programme suivant dans un fichier appelé glibc.c :
#include <stdio.h>
main()
{
printf("hello world!\n");
}
et compilez le programme.
% gcc glibc.c -o glibc
Utilisez ldd pour vérifier que le programme a été lié avec glibc2, et non avec votre ancienne libc :
% ldd glibc
libc.so.6 => /lib/libc.so.6 (0x4000e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Si ça compile et que ça génère "hello world!" quand vous le lancez, l'installation est réussie.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre