HOWTO Glibc 2

Eric Green, ejg3@cornell.edu

v1.5, 8 f�vrier 1998
(Maintenance de la version fran�aise par G�raud Canet, canet@labri.u-bordeaux.fr) Le HOWTO Glibc 2 couvre l'installation et l'utilisation de la biblioth�que C GNU version 2 (libc 6) sur les syst�mes Linux.

1. Introduction

1.1 Note du traducteur

Ce document a �t� traduit et maintenu jusqu'� la version 1.4 par Olivier Tharan, dont je ne fais que reprendre modestement le travail.

Le document est truff� de signes "cabalistiques" comme des di�se et des pourcent, dont la repr�sentation en SGML est respectivement # et % ; le source LaTeX g�n�r� par les outils de conversion SGML introduit le signe antislash devant ces signes et reste dans la version PostScript de ce document. Les donn�es d'exemple sont donc erron�es, mais vous pouvez vous rapporter � la version HTML du document qui n'a pas ces erreurs. La version d'origine connait les m�mes probl�mes.

1.2 � propos de glibc 2

Glibc 2 est la toute derni�re version de la biblioth�que C du GNU. Elle fonctionne pour l'instant sans modifications sur les syst�mes GNU Hurd, et les syst�mes Linux sur architectures i386, m68k et alpha. Les adaptations pour Linux PowerPC, MIPS, Sparc, Sparc 64 et ARM seront dans la version 2.1. � l'avenir, d'autres architectures et syst�mes d'exploitation seront support�s.

Sur Linux, glibc 2 est utilis�e comme libc avec un num�ro majeur de version �gal � 6, le successeur de la libc 5 pour Linux. Elle est destin�e par les d�veloppeurs de la libc Linux � remplacer en fin de compte la libc 5. � l'heure de la version 2.0.6, on consid�re que glibc est de qualit� suffisante pour �tre utilis�e en production. La version 2.1 (� venir dans un futur proche) sera pr�te pour une utilisation normale avec l'ajout de plus de portages et de possibilit�s.

Il y a trois extensions disponibles en option sur la glibc 2 :

Crypt

Le paquetage UFC-crypt pour le cryptage des donn�es. Il est disponible s�par�ment � cause de restrictions � l'exportation.

LinuxThreads

Une mise en oeuvre de l'interface Posix 1003.1c "pthread".

Locale data

Contient les donn�es n�cessaires � la construction des fichiers de donn�es locale pour utiliser les possibilit�s d'internationalisation de la glibc.

Les extensions crypt et LinuxThreads sont fortement recommand�es... Ne pas les utiliser risque de les rendre incompatibles avec les biblioth�ques d'autres syst�mes. (Si vous ne voulez pas les utiliser, vous devez ajouter l'option --disable-sanity-checks quand vous lancez configure.)

1.3 � propos de ce document

Ce HOWTO couvre l'installation de la biblioth�que glibc 2 sur un syst�me Linux existant. Il est fait pour les utilisateurs de syst�mes � base de processeurs Intel qui utilisent pour l'instant la libc 5, mais les utilisateurs d'autres syst�mes et de biblioth�ques similaires (comme la glibc 1) devraient pouvoir utiliser ces informations en substituant les noms de fichiers et d'architecture ad�quats aux endroits appropri�s.

La copie la plus r�cente de ce HOWTO fait partie du Linux Documentation Project, ou bien vous en trouverez une version � http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html.

1.4 Changements r�cents dans ce document

Diff�rences entre la version 1.5 et 1.4 :

Diff�rences entre la version 1.4 et 1.3 :

2. Choix de la m�thode d'installation

Il y a plusieurs mani�res d'installer glibc. Vous pouvez installer les biblioth�ques pour les tester, en continuant d'utiliser les biblioth�ques existantes par d�faut, tout en vous permettant d'essayer les nouvelles biblioth�ques par l'utilisation d'options diff�rentes � la compilation de votre programme. L'installation de cette mani�re facilite aussi la d�sinstallation de glibc dans le futur (cependant, tout programme li� avec la glibc ne fonctionnera plus une fois que vous aurez enlev� les biblioth�ques). L'utilisation de glibc comme une biblioth�que de test demande que vous compiliez les biblioth�ques � partir des sources. Il n'y a pas de distribution binaire pour l'installation de cette mani�re. Cette installation est d�crite dans la section installation comme biblioth�que de test.

L'autre mani�re de l'installer, d�crite dans ce document, est d'utiliser glibc comme biblioth�que principale. Tous les nouveaux programmes que vous compilerez sur votre syst�me utiliseront glibc, bien que vous puissiez toujours lier des programmes � vos anciennes biblioth�ques par des options de compilation diff�rentes. Vous pouvez, soit installer les biblioth�ques � partir de binaires, soit compiler la biblioth�que vous-m�me. Si vous voulez changer les options d'optimisation ou de configuration, ou utiliser une extension qui n'est pas distribu�e en paquetage binaire, vous devrez obtenir la distribution de sources et compiler vous-m�me. Cette proc�dure d'installation est d�crite dans la section installation comme biblioth�que C principale.

Frodo Looijaard d�crit encore une autre mani�re d'installer glibc. Sa m�thode implique l'installation de glibc comme biblioth�que secondaire et la mise en place d'un compilateur crois� (cross-compiler) pour compiler en utilisant glibc. Pour cette m�thode, la proc�dure d'installation est plus compliqu�e que l'installation en tant que biblioth�que de test d�crite dans ce document, mais facilite la compilation et l'�dition de liens avec glibc. Cette m�thode est d�crite dans son document Installer glibc-2 sur Linux (en anglais).

Si vous utilisez en ce moment un syst�me Debian 1.3 et ne voulez pas le mettre � jour en installant la version instable de Debian pour utiliser glibc, le HOWTO libc5 vers libc6 Debian d�crit la mani�re d'utiliser les paquetages Debian pour mettre votre syst�me � jour.

Si vous installez glibc 2 sur un syst�me important, vous voudrez sans doute utiliser l'installation de test. M�me s'il n'y a pas de bogues, certains programmes devront �tre modifi�s avant compilation � cause de changements dans les prototypes de fonctions et les types de donn�es.

3. Obtenir la biblioth�que

La glibc 2 contient le paquetage glibc et trois paquetages suppl�mentaires optionnels, LinuxThreads, Locale et Crypt. Vous pouvez trouver les sources �

Il vous faudra � peu pr�s 150 Mo d'espace disque pour la compilation compl�te et l'installation. L'installation binaire de base du paquetage de la biblioth�que prend aux alentours de 50 Mo.

Les paquetages binaires pour la version 2.0.6 ne sont pas disponibles. Les paquetages binaires pour la version 2.0.4 sont disponibles pour i386 et m68k, et la version 2.0.1 pour les alpha, vous les trouverez �

Il y a des restrictions � l'exportation de l'extension crypt. Les utilisateurs non-ressortissants des �tats-Unis devraient l'obtenir � ftp://ftp.ifi.uio.no/pub/gnu.

Si vous utilisez une distribution Red Hat, vous pouvez obtenir les RPMs pour la glibc 2 � ftp://ftp.redhat.com/pub/redhat/. La glibc 2 est la biblioth�que C principale de la nouvelle distribution Red Hat 5.0.

Si vous utilisez une distribution Debian, vous pouvez obtenir les paquetages pour glibc 2 � ftp://ftp.debian.org/debian/dists/unstable/main/. Les fichiers sont nomm�s libc6. Glibc 2 fait maintenant partie du paquetage de base de la version hamm de Debian, et sera la libc principale quand Debian 2.0 sortira.

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

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

5. Installation comme biblioth�que C principale

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 pouvez alors sauter cette section.

5.1 Construction de la biblioth�que � partir des sources

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.

�l�ments requis

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.

Extraction des sources

Vous devez extraire les sources des archives pour compiler. La meilleure fa�on de le faire est 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 localedata 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 nomm� compile, et allez dedans. Tout le travail sera fait dans ce r�pertoire, ce qui simplifiera le nettoyage (les d�veloppeurs ne se sont pas vraiment souci� du '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

Compilation

Pour compiler et v�rifier, lancez :

 make
 make check
 

5.2 Pr�paration � l'installation

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.

  1. Cr�ez un nouveau r�pertoire pour y mettre les anciens fichiers :
     mkdir -p /usr/i486-linuxlibc5/lib
     
    
  2. Les vieux fichiers d'en-t�te doivent �tre �vacu�s de /usr/include :
     mv /usr/include /usr/i486-linuxlibc5/include
     
    
  3. Cr�ez un nouveau r�pertoire d'en-t�tes et activez les liens vers d'autres en-t�tes :
     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.
  4. Remettre des fichiers d'en-t�tes et des liens suppl�mentaires. Certaines biblioth�ques non standards comme ncurses installent des fichiers dans /usr/include ou installent un lien vers leur r�pertoire d'en-t�te dans /usr/include. Ces fichiers et liens doivent �tre remis en place pour pouvoir utiliser les biblioth�ques suppl�mentaires correctement.
  5. Ajoutez le nouveau r�pertoire de biblioth�que (comme /usr/i486-linuxlibc5/lib) en haut de votre fichier /etc/ld.so.conf. Vous devriez avoir ld.so-1.8.8 ou mieux install� pour �viter d'avoir des messages bizarres une fois que glibc sera install�e.
  6. D�placez ou copiez toutes les anciennes biblioth�ques C dans le nouveau r�pertoire.
     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 racine.
  7. D�placez les fichiers /usr/lib/*.o dans le nouveau r�pertoire.
     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
     
    
  8. Mettez � jour votre cache de biblioth�que apr�s avoir d�plac� vos biblioth�ques.
     ldconfig -v
     
    

5.3 Installation � partir du paquetage binaire

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�rente, substituez les noms de fichiers ad�quats.

5.4 Installation � partir des sources

Pour installer la biblioth�que � partir des sources, lancez :

 make install
 ldconfig -v
 

5.5 Mise � jour des specs gcc

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.

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

6. Compilation avec la libc non principale

Il y a des fois o� vous voudrez utiliser une biblioth�que diff�rente pour compiler vos programmes. Cette section explique comment faire, en utilisant les noms de r�pertoires et d'installation utilis�s dans les exemples des deux sections pr�c�dentes. Souvenez-vous de changer les noms pour coller � votre configuration.

6.1 Avertissement concernant l'utilisation de libcs non principales

Avant de compiler un programme utilis� dans le processus de d�marrage, rappelez-vous que si le programme est li� dynamiquement, et est utilis� avant que les partitions non-racines soient mont�es, toutes les biblioth�ques li�es doivent �tre sur la partition racine. En suivant la proc�dure d'installation de la section pr�c�dente pour installer glibc comme biblioth�que C principale, la vieille libc reste dans /lib, qui sera sur votre partition racine. Ceci veut dire que tous vos programmes fonctionneront encore lors du d�marrage. Cependant, si /usr est sur une partition diff�rente et que vous installez glibc comme biblioth�que de test dans /usr/i486-linuxglibc2, tous les nouveaux programmes que vous compilerez avec glibc ne fonctionneront pas tant que la partition /usr ne sera pas mont�e.

6.2 Compilation des programmes avec une glibc de test

Pour compiler un programme avec glibc en installation de test, vous devez mettre � z�ro les chemins d'en-t�te pour qu'ils pointent vers les en-t�tes glibc. En sp�cifiant "-nostdinc", vous annulerez les chemins normaux, et "-I/usr/i486-linuxglibc2/include" pointera vers les ent�tes de glibc. Vous devrez aussi sp�cifier les en-t�tes gcc, que l'on trouve dans /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include (en supposant que vous ayez install� la biblioth�que de test dans i486-linuxglibc2 avec gcc version 2.7.2.2).

Pour lier un programme � une glibc de test, vous devez sp�cifier la configuration gcc. Vous le faites avec l'option "-b i486-linuxglibc2".

Pour la plupart des programmes, vous pouvez sp�cifier ces nouvelles options en les ajoutant aux options de makefile $CFLAGS et $LDFLAGS :

 CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -b i486-linuxglibc2
 LDFLAGS = -b i486-linuxglibc2
 

Si vous utilisez un script configure, d�finissez les variables shell $CFLAGS et $LDFLAGS (en utilisant env/setenv pour csh/tcsh ou set/export pour sh/bash/etc) avant de lancer configure. Les makefiles g�n�r�s par celui-ci devraient contenir les variables $CFLAGS et $LDFLAGS correctes. Tous les scripts configure ne tiendront pas compte des variables, et par cons�quent vous devriez v�rifier apr�s avoir lanc� configure et �diter les makefiles � la main si n�cessaire.

Si les programmes que vous compilez n'appellent que gcc (et pas cpp ou les binutils directement), vous pouvez utiliser le script suivant pour �conomiser la sp�cification des options � chaque fois :

 #!/bin/bash
 /usr/bin/gcc -b i486-linuxglibc2 -nostdinc \
              -I/usr/i486-linuxglibc2/include \
              -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include "$@"
 

Vous pourrez alors utiliser ce script � la place de "gcc" pour compiler.

6.3 Compilation des programmes avec libc 5 quand glibc est la biblioth�que principale

Pour compiler un programme avec vos anciennes biblioth�ques quand vous avez install� glibc comme biblioth�que principale, vous devez mettre � z�ro les chemins d'en-t�tes vers les anciennes en-t�tes. En sp�cifiant "-nostdinc", vous annulerez les chemins normaux et "-I/usr/i486-linuxlibc5/include" pointera vers les en-t�tes libc 5. Vous devez aussi indiquer "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" pour inclure les en-t�tes sp�cifiques � gcc. Rappelez-vous d'ajuster ces chemins selon la mani�re dont vous avez nomm� les nouveaux r�pertoires et selon votre version de gcc.

Pour lier un programme � votre ancienne libc, vous devez sp�cifier la configuration de gcc. Vous le faites en utilisant l'option "-b i486-linuxlibc5".

Pour la plupart des programmes, vous pouvez indiquer ces nouvelles options en les ajoutant aux options de makefile $CFLAGS et $LDFLAGS :

 CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5
 LDFLAGS = -b i486-linuxlibc5
 

Si vous utilisez un script configure, d�finissez les variables shell $CFLAGS et $LDFLAGS (en utilisant env/setenv pour csh/tcsh, ou set/export pour sh/bash/etc) avant de lancer configure. Les makefiles g�n�r�s par celui-ci devraient contenir les variables $CFLAGS et $LDFLAGS corrects. Tous les scripts configure ne verront pas les variables, et vous devriez donc v�rifier apr�s avoir lanc� configure et �diter les makefiles si n�cessaire.

Si les programmes que vous compilez n'appellent que gcc (et pas cpp ou binutils directement), vous pouvez utiliser le script suivant pour �viter de devoir indiquer toutes les options � chaque fois :

 #!/bin/bash
 /usr/bin/gcc -b i486-linuxlibc5 -nostdinc \
              -I/usr/i486-linuxlibc5/include \
              -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include "$@"
 

Vous pouvez alors utiliser ce script � la place de "gcc" pour la compilation.

7. Compilation des programmes C++

Libg++ utilise des parties de la biblioth�que math�matique, elle est donc li�e � libm. Puisque votre biblioth�que libg++ existante aura �t� compil�e avec votre ancienne biblioth�que, vous devrez recompiler libg++ avec glibc ou obtenir une copie binaire. Les derni�res sources de libg++, en m�me temps qu'un binaire li� � glibc (pour x86) se trouvent � ftp://ftp.yggdrasil.com/private/hjl/.

7.1 Installation de libg++ pour une installation glibc de test

Si vous avez install� glibc comme biblioth�que de test, vous devez installer les fichiers dans le r�pertoire dans lequel vous avez install� glibc (comme /usr/i486-linuxglibc2 pour l'exemple des sections pr�c�dentes). Si vous installez � partir du paquetage binaire (ce que je recommanderais, puisque je n'ai jamais eu de chance pour compiler libg++ de cette mani�re), vous devez extraire les fichiers dans un r�pertoire temporaire et d�placer tous les fichiers usr/lib/ dans le r�pertoire <r�pertoire install>/lib/, les fichiers usr/include/ dans le r�pertoire <r�pertoire install>/include/ (rappelez-vous d'effacer le lien include/g++ avant !), et les fichiers usr/bin/ dans le r�pertoire <r�pertoire install>/bin/.

7.2 Installation de libg++ pour une installation glibc principale

Si vous avez install� glibc comme biblioth�que principale, vous devez d'abord d�placer vos anciens fichiers libg++ dans l'ancien r�pertoire libc si vous voulez encore pouvoir compiler des programmes g++ avec votre ancienne libc. La meilleure fa�on de proc�der est probablement d'installer une nouvelle copie de libg++ compil�e avec libc 5 comme dans la section pr�c�dente, et ensuite d'installer la version glibc normalement.

7.3 Compilation de programmes C++ avec la libc non principale

Si vous essayez de compiler un programme C++ avec une libc non principale, vous devrez inclure le r�pertoire d'en-t�tes g++, qui dans les exemples ci-dessus serait /usr/i486-linuxglibc2/include/g++ pour une installation glibc de test ou /usr/i486-linuxlibc5/include/g++ pour une installation glibc principale. On peut faire cela en g�n�ral en ajoutant � la variable $CXXFLAGS :

 CXXFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglibc2
 

8. Indiquer les bogues

Si vous pensez que la biblioth�que est v�rol�e, veuillez d'abord lire la FAQ. Il se peut que d'autres personnes aient eu ce probl�me et qu'il y ait une solution simple. Vous devriez aussi regarder la partie "Outils recommand�s pour l'installation de la biblioth�que C de GNU" dans le fichier INSTALL puisque certains bogues proviennent des outils et non de glibc.

Une fois que vous avez trouv� un bug, assurez-vous que c'en est vraiment un. Une bonne mani�re de le faire est de regarder si la biblioth�que C GNU se comporte de la m�me mani�re qu'une autre biblioth�que C. S'il en est ainsi, vous vous �tes tromp� et les biblioth�ques ont raison (mais pas forc�ment). Dans le cas contraire, l'une des biblioth�ques a probablement tort.

Ensuite, dirigez-vous vers http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl, et parcourez la base de donn�es des bugs. V�rifiez bien que le probl�me n'a pas d�j� �t� indiqu�. Vous devriez aussi jeter un coup d'oeil au fichier BUGS (ditribu� avec glibc) pour prendre connaissance des bugs connus.

Une fois que vous �tes s�r d'avoir trouv� un bug, essayez de le r�duire au plus petit test pratique qui reproduit le probl�me. Dans le cas d'une biblioth�que C, vous ne devrez probablement en �tre r�duit qu'� un appel de fonction de la biblioth�que, si possible. Ceci ne devrait pas �tre trop difficile.

L'�tape finale une fois que vous avez un exemple simple de test est d'indiquer le bug. En indiquant un bug, envoyez votre exemple de test, les r�sultats que vous avez obtenus, ce que vous pensez �tre le probl�me (si vous avez pens� � quelque chose), le type de votre syst�me, les versions de la biblioth�que C GNU, du compilateur GNU CC et des GNU binutils que vous utilisez. Ajoutez aussi les fichiers config.status et config.mak cr��s en lan�ant configure ; ils seront dans le r�pertoire qui �tait le r�pertoire courant quand vous avez lanc� configure.

Vous devez envoyer tous les rapports de bug pour la biblioth�que C GNU en utilisant le script shell glibcbug livr� avec la libc GNU � bugs@gnu.org (l'ancienne adresse bugs@gnu.ai.mit.edu fonctionne encore), ou par l'interm�diaire de l'interface Web de GNATS � http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl.

Les suggestions et les questions doivent �tre envoy�es � la liste de distribution � bugs-glibc@prep.ai.mit.edu. Si vous ne lisez pas le groupe de gnews gnu.bug.glibc, vous pouvez vous abonner � la liste en demandant � bug-glibc-request@prep.ai.mit.edu.

Veuillez s'il vous plait ne pas envoyer de rapport de bug concernant la biblioth�que C GNU � <bug-gcc@prep.ai.mit.edu>. Cette liste s'occupe des rapports de bug de GNU CC. GNU CC et la biblioth�que C GNU sont des entit�s distinctes maintenues par des personnes diff�rentes.

9. Fichiers specs d'exemple

Voici ci-inclus un fichier d'exemple specs pour glibc 2 que gcc utilise pour la compilation et la liaison dynamique. On devrait le trouver dans le r�pertoire /usr/lib/gcc-lib/<nouveau r�pertoire>/<version gcc>. Si vous utilisez un syst�me x86, vous pouvez copier exactement cette section dans le fichier.

 *asm:
 %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}

 *asm_final:
 %{pipe:-}

 *cpp:
 %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}

 *cc1:
 %{profile:-p}

 *cc1plus:


 *endfile:
 %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s

 *link:
 -m elf_i386 %{shared:-shared}   %{!shared:     %{!ibcs:       %{!static:       %{rdynamic:-export-dynamic}     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}}  %{static:-static}}}

 *lib:
 %{!shared: %{pthread:-lpthread}        %{profile:-lc_p} %{!profile: -lc}}

 *libgcc:
 -lgcc

 *startfile:
 %{!shared:      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}                  %{!p:%{profile:gcrt1.o%s}                         %{!profile:crt1.o%s}}}}    crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}

 *switches_need_spaces:


 *signed_char:
 %{funsigned-char:-D__CHAR_UNSIGNED__}

 *predefines:
 -D__ELF__ -Dunix -Di386 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386)

 *cross_compile:
 0

 *multilib:
 . ;
 

10. Divers

10.1 Informations suppl�mentaires

Pages Web

Groupes de news

Listes de distribution

Liste de discussion Glibc 2 Linux.

Cette liste est destin�e � la discussion entre les utilisateurs Linux qui ont install� glibc2, la nouvelle biblioth�que C. Les sujets peuvent comprendre des probl�mes de compatibilit� et des questions sur la compilation de code dans un environnement Linux/glibc. Pour s'abonner, envoyer un courrier � Majordomo@ricardo.ecn.wfu.edu avec dans le corps "subscribe glibc-linux <votre adresse email>".

10.2 Remerciements

J'ai vol� une bonne partie de ces informations sur la page web de GNU Libc et de l'annonce de glibc 2 par Ulrich Drepper <drepper@gnu.ai.mit.edu> et ses commentaires. Andreas Jaeger <aj@arthur.rhein-neckar.de> a aliment� une partie de la section sur l'indication des bugs.

Les personnes suivantes ont fourni des informations et un retour sur ce document :

Les traductions de ce document sont faites par :

10.3 Retour d'informations

En plus d'�crire ce HOWTO, maintenir la page glibc 2 pour Linux, et l'utiliser sur ma machine, je n'ai rien � voir avec le projet glibc. Je suis loin d'�tre un expert dans ce domaine, bien que j'essaie de r�soudre les probl�mes qu'on m'envoie par courrier �lectronique. J'appr�cie tout retour, correction ou suggestion que vous pourriez me faire. Veuillez les envoyer � ejg3@cornell.edu.

10.4 Copyright

Copyright (c) 1997 par Eric Green. Ce document peut �tre distribu� sous les termes de la licence LDP.