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.gzCeci 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 compileLancez
../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 checkSi le 'make check' réussit, installez la bibliothèque :
make install
4.2 Mise à jour du chargeur de liens dynamique
- Créez un lien à partir du nouvel
ld.sovers/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 dansln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2/libfacilitera le passage à glibc en tant que bibliothèque C principale quand la version stable sortira.- É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/libdans l'exemple ci-dessus. Après avoir modifié/etc/ld.so.conf, lancezldconfig -v
4.3 Configuration pour gcc
La dernière étape de l'installation est la mise à jour de
/usr/lib/gcc-libpour 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.2Dans 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-linuxglibc2Allez 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.2et éditez le fichier
specsse trouvant dans ce répertoire. Dans ce fichier, changez/lib/ld-linux.so.1en/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/X11Vous 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 glibcUtilisez 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