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.6.tar.gz
cd glibc-2.0.6
tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
tar xzf ../glibc-crypt-2.0.6.tar.gz
tar xzf ../glibc-localedata-2.0.6.tar.gz
Ceci mettra les répertoires linuxthreads, crypt et localedate dans le répertoire glibc-2.0.6 où configure pourra trouver ces extensions.
Dans le répertoire glibc-2.0.6, 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
ld.so
vers /lib/ld-linux.so.2
:
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.
/etc/ld.so.conf
. Vous devez ajouter le chemin vers le
répertoire lib dans lequel se trouvent les nouvelles bibliothèques à
la fin du fichier, qui sera <préfixe>/lib
, comme
/usr/i486-linuxglibc2/lib
dans l'exemple ci-dessus. Après avoir
modifié /etc/ld.so.conf
, lancez
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.6.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é.