Cette section couvre l'installation de glibc 2 comme bibliothèque de test. Tout ce que vous compilerez sera lié à vos bibliothèques existantes sauf si vous donnez des paramètres supplémentaires pour les lier aux nouvelles bibliothèques. Il semble que les chemins d'accès soient compilés dans un certain nombre de fichiers, et vous devrez probablement installer la bibliothèque à partir des sources.
Sur un i586 à 133 MHz avec 64 Mo de RAM, il faut environ trois heures pour compiler les bibliothèques complètes avec les extensions. Sur un i686 à 200 MHz chargé, il faut environ une demi-heure.
Vous devez extraire les sources des archives pour pouvoir les compiler. La meilleure façon de procéder est de faire 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 localedate 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 appelé compile, et déplacez-vous dedans. Tout le travail doit être effectué dans ce répertoire, ce qui simplifiera le nettoyage. (Les développeurs ne se sont pas très occupés de rendre 'make clean' parfait pour l'instant.)
mkdir compile
cd compile
Lancez ../configure. Pour utiliser les paquetages d'extension, vous devez les spécifier avec --enable-add-ons, comme --enable-add-ons=linuxthreads,crypt,localedata. Vous devez aussi choisir un répertoire de destination pour l'installation. /usr/i486-linuxglibc2 est un bon choix. La ligne de commande de configure pour ceci serait :
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
Pour compiler et vérifier, lancez :
make
make check
Si le 'make check' réussit, installez la bibliothèque :
make install
ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
C'est la seule bibliothèque dont l'emplacement est fixé une fois qu'un
programme est lié, et l'utilisation d'un lien dans /lib facilitera le
passage à glibc en tant que bibliothèque C principale quand la version
stable sortira.
ldconfig -v
La dernière étape de l'installation est la mise à jour de /usr/lib/gcc-lib pour que gcc sache comment utiliser les nouvelles bibliothèques. D'abord vous devez dupliquer la configuration existante. Pour savoir quelle est la configuration en cours, utilisez l'option -v de gcc :
% 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> vers le nouveau répertoire système de test :
cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxglibc2
Allez dans le nouveau répertoire système de test et dans le répertoire version
cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
et éditez le fichier 'specs' se trouvant dans ce répertoire. Dans ce
fichier, changez /lib/ld-linux.so.1 en /lib/ld-linux.so.2. Vous devrez
aussi enlever toutes les expressions %{...:-lgmon}
du fichier,
puisque glibc n'utilise pas la bibliothèque gmon pour les
optimisations. Vous trouverez un fichier specs d'exemple dans la
section
Fichiers specs d'exemple
.
Vous devez créer des liens dans votre nouveau répertoire d'en-têtes vers d'autres répertoires d'en-têtes :
cd /usr/i486-linuxglibc2/include
ln -s /usr/src/linux/include/linux
ln -s /usr/src/linux/include/asm
ln -s /usr/X11R6/include/X11
Vous avez peut-être d'autres bibliothèques comme ncurses qui nécessitent d'avoir leurs fichiers d'en-têtes dans ce répertoire. Vous devriez copier ou faire un lien vers ces fichiers depuis /usr/include. (Certaines bibliothèques auront besoin d'être recompilées avec glibc2 pour pouvoir fonctionner avec glibc2. Dans ces cas, compilez simplement et installez les paquetages dans /usr/i486-linuxglibc2.)
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 avec les options "-b <répertoire d'installation> -nostdinc -I<répertoire d'installation>/include -I/usr/lib/gcc-lib/<nouveau système>/<version de gcc>/include" :
% gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include 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 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
S'il compile, que les liens sont effectués et qu'il génère "hello world!" quand vous le lancez, l'installation a fonctionné.
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