Page suivante - Page précédente - Table des matières

4. Installation comme bibliothèque de test

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.

4.1 Compilation et installation

Éléments requis

  • À peu pres 150 Mo d'espace disque libre
  • GNU make 3.75
  • gcc >= 2.7.2 (ou mieux, 2.7.2.1)
  • binutils 2.8.1 (pour les alpha vous devez utiliser une mise à jour temporaire ou snapshot)
  • bash 2.0
  • autoconf 2.12 (si vous changez configure.in)
  • texinfo 3.11

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.

Extraction des sources

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.

Configuration

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

Compilation et installation

Pour compiler et vérifier, lancez :

 make
 make check

Si le 'make check' réussit, installez la bibliothèque :

 make install

4.2 Mise à jour du chargeur de liens dynamique

  1. Créez un lien à partir du nouvel 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.
  2. Éditez /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
    

4.3 Configuration pour gcc

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.

4.4 Mise à jour des liens des fichiers d'en-tête

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.)

4.5 Test de l'installation

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é.


Page suivante - Page précédente - Table des matières