
                                 HOWTO Glibc 2

Eric Green, ejg3@cornell.edu

   v1.5, 8 fvrier 1998
     _________________________________________________________________

   _(Maintenance de la version franaise par Graud Canet,
   canet@labri.u-bordeaux.fr) Le HOWTO Glibc 2 couvre l'installation et
   l'utilisation de la bibliothque C GNU version 2 (libc 6) sur les
   systmes 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 dise et
   des pourcent, dont la reprsentation en SGML est respectivement &num;
   et &percnt; ; le source LaTeX gnr par les outils de conversion SGML
   introduit le signe antislash devant ces signes et reste dans la
   version PostScript de ce document. Les donnes d'exemple sont donc
   errones, mais vous pouvez vous rapporter  la version HTML du
   document qui n'a pas ces erreurs. La version d'origine connait les
   mmes problmes.

1.2  propos de glibc 2

   Glibc 2 est la toute dernire version de la bibliothque C du GNU.
   Elle fonctionne pour l'instant sans modifications sur les systmes GNU
   Hurd, et les systmes 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 systmes
   d'exploitation seront supports.

   Sur Linux, glibc 2 est utilise comme libc avec un numro majeur de
   version gal  6, le successeur de la libc 5 pour Linux. Elle est
   destine par les dveloppeurs de la libc Linux  remplacer en fin de
   compte la libc 5.  l'heure de la version 2.0.6, on considre que
   glibc est de qualit suffisante pour tre utilise en production. La
   version 2.1 ( venir dans un futur proche) sera prte pour une
   utilisation normale avec l'ajout de plus de portages et de
   possibilits.

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

   _Crypt_
          Le paquetage UFC-crypt pour le cryptage des donnes. Il est
          disponible sparment  cause de restrictions  l'exportation.

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

   _Locale data_
          Contient les donnes ncessaires  la construction des fichiers
          de donnes locale pour utiliser les possibilits
          d'internationalisation de la glibc.

   Les extensions crypt et LinuxThreads sont fortement recommandes... Ne
   pas les utiliser risque de les rendre incompatibles avec les
   bibliothques d'autres systmes. (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 bibliothque glibc 2 sur un
   systme Linux existant. Il est fait pour les utilisateurs de systmes
    base de processeurs Intel qui utilisent pour l'instant la libc 5,
   mais les utilisateurs d'autres systmes et de bibliothques similaires
   (comme la glibc 1) devraient pouvoir utiliser ces informations en
   substituant les noms de fichiers et d'architecture adquats aux
   endroits appropris.

   La copie la plus rcente 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 rcents dans ce document

   Diffrences entre la version 1.5 et 1.4 :

     * Indexage ajout par Ed Bailey.
     * Changement de mon adresse lectronique.

   Diffrences entre la version 1.4 et 1.3 :

     * Chang l'tat courant d'exprimental  production.
     * Mis  jour la liste des portages en dveloppement.
     * Mis  jour la dernire version en 2.0.6.

2. Choix de la mthode d'installation

   Il y a plusieurs manires d'installer glibc. Vous pouvez installer les
   bibliothques pour les tester, en continuant d'utiliser les
   bibliothques existantes par dfaut, tout en vous permettant d'essayer
   les nouvelles bibliothques par l'utilisation d'options diffrentes 
   la compilation de votre programme. L'installation de cette manire
   facilite aussi la dsinstallation de glibc dans le futur (cependant,
   tout programme li avec la glibc ne fonctionnera plus une fois que
   vous aurez enlev les bibliothques). L'utilisation de glibc comme une
   bibliothque de test demande que vous compiliez les bibliothques 
   partir des sources. Il n'y a pas de distribution binaire pour
   l'installation de cette manire. Cette installation est dcrite dans
   la section installation comme bibliothque de test.

   L'autre manire de l'installer, dcrite dans ce document, est
   d'utiliser glibc comme bibliothque principale. Tous les nouveaux
   programmes que vous compilerez sur votre systme utiliseront glibc,
   bien que vous puissiez toujours lier des programmes  vos anciennes
   bibliothques par des options de compilation diffrentes. Vous pouvez,
   soit installer les bibliothques  partir de binaires, soit compiler
   la bibliothque vous-mme. Si vous voulez changer les options
   d'optimisation ou de configuration, ou utiliser une extension qui
   n'est pas distribue en paquetage binaire, vous devrez obtenir la
   distribution de sources et compiler vous-mme. Cette procdure
   d'installation est dcrite dans la section installation comme
   bibliothque C principale.

   Frodo Looijaard dcrit encore une autre manire d'installer glibc. Sa
   mthode implique l'installation de glibc comme bibliothque secondaire
   et la mise en place d'un compilateur crois (_cross-compiler_) pour
   compiler en utilisant glibc. Pour cette mthode, la procdure
   d'installation est plus complique que l'installation en tant que
   bibliothque de test dcrite dans ce document, mais facilite la
   compilation et l'dition de liens avec glibc. Cette mthode est
   dcrite dans son document Installer glibc-2 sur Linux (en anglais).

   Si vous utilisez en ce moment un systme 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 dcrit la manire
   d'utiliser les paquetages Debian pour mettre votre systme  jour.

   Si vous installez glibc 2 sur un systme important, vous voudrez sans
   doute utiliser l'installation de test. Mme s'il n'y a pas de bogues,
   certains programmes devront tre modifis avant compilation  cause de
   changements dans les prototypes de fonctions et les types de donnes.

3. Obtenir la bibliothque

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

     * ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz
     * ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz
     * ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz
     * ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz

   Il vous faudra  peu prs 150 Mo d'espace disque pour la compilation
   complte et l'installation. L'installation binaire de base du
   paquetage de la bibliothque 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 

     * Intel x86:
          + ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz
          + ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.
            gz
     * Alpha:
          + ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux.tar
            .gz
          + ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-lin
            ux.tar.gz
     * m68k:
          + ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.
            gz
          + ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linux.bi
            n.tar.gz

   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 bibliothque 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
   nomms 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 bibliothque de test

   Cette section couvre l'installation de glibc 2 comme bibliothque de
   test. Tout ce que vous compilerez sera li  vos bibliothques
   existantes sauf si vous donnez des paramtres supplmentaires pour les
   lier aux nouvelles bibliothques. Il semble que les chemins d'accs
   soient compils dans un certain nombre de fichiers, et vous devrez
   probablement installer la bibliothque  partir des sources.

4.1 Compilation et installation

  lments 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 bibliothques compltes 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 faon de procder 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 rpertoires linuxthreads, crypt et localedate dans le
   rpertoire glibc-2.0.6 o configure pourra trouver ces extensions.

  Configuration

   Dans le rpertoire glibc-2.0.6, crez un rpertoire appel compile, et
   dplacez-vous dedans. Tout le travail doit tre effectu dans ce
   rpertoire, ce qui simplifiera le nettoyage (les dveloppeurs ne se
   sont pas trs occups de rendre 'make clean' parfait pour l'instant).

 mkdir compile
 cd compile

   Lancez ../configure. Pour utiliser les paquetages d'extension, vous
   devez les spcifier avec --enable-add-ons, comme
   --enable-add-ons=linuxthreads,crypt,localedata. Vous devez aussi
   choisir un rpertoire 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 vrifier, lancez :

 make
 make check

   Si le 'make check' russit, installez la bibliothque :

 make install

4.2 Mise  jour du chargeur de liens dynamique

    1. Crez 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 bibliothque 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 bibliothque C
       principale quand la version stable sortira.
    2. ditez /etc/ld.so.conf. Vous devez ajouter le chemin vers le
       rpertoire lib dans lequel se trouvent les nouvelles bibliothques
        la fin du fichier, qui sera <prfixe>/lib, comme
       /usr/i486-linuxglibc2/lib dans l'exemple ci-dessus. Aprs avoir
       modifi /etc/ld.so.conf, lancez

 ldconfig -v

4.3 Configuration pour gcc

   La dernire tape de l'installation est la mise  jour de
   /usr/lib/gcc-lib pour que gcc sache comment utiliser les nouvelles
   bibliothques. 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 systme, et 2.7.2.2 est la
   version. Vous devez copier /usr/lib/gcc-lib/<systme> vers le nouveau
   rpertoire systme de test :

 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxglibc2

   Allez dans le nouveau rpertoire systme de test et dans le rpertoire
   version

 cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2

   et ditez le fichier specs se trouvant dans ce rpertoire. 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 bibliothque 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-tte

   Vous devez crer des liens dans votre nouveau rpertoire d'en-ttes
   vers d'autres rpertoires d'en-ttes :

 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 bibliothques comme ncurses qui
   ncessitent d'avoir leurs fichiers d'en-ttes dans ce rpertoire. Vous
   devriez copier ou faire un lien vers ces fichiers depuis /usr/include.
   (Certaines bibliothques auront besoin d'tre recompiles 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, crez le programme suivant dans un fichier
   appel glibc.c :

 #include <stdio.h>

 main()
 {
     printf("hello world!\n");
 }

   et compilez-le avec les options "-b <rpertoire d'installation>
   -nostdinc -I<rpertoire d'installation>/include
   -I/usr/lib/gcc-lib/<nouveau systme>/<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 vrifier 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 effectus et qu'il gnre "hello
   world!" quand vous le lancez, l'installation a fonctionn.

5. Installation comme bibliothque C principale

   Cette section couvre l'installation de glibc2 comme bibliothque C
   principale. Tous les nouveaux programmes que vous compilerez seront
   lis avec cette bibliothque, sauf si vous utilisez des options de
   compilation spciales pour le lier avec une autre version.

   Si vous utilisez Redhat ou Debian et avez charg les fichier rpm ou
   deb adquats, voyez les instructions d'installation Redhat ou Debian.
   Vous pouvez alors sauter cette section.

5.1 Construction de la bibliothque  partir des sources

   Cette section explique comment compiler glibc 2 et ses extensions 
   partir des sources. Vous devez compiler la bibliothque si vous voulez
   changer les options d'optimisation ou de configuration ou utiliser un
   paquetage pour lequel vous n'avez pas de binaire.

  lments requis

     * Environ 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 aurez besoin d'une version
       '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 toutes les bibliothques 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 faon 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 rpertoires linuxthreads, crypt et localedata dans le
   rpertoire glibc-2.0.6 o configure pourra trouver ces extensions.

  Configuration

   Dans le rpertoire glibc-2.0.6, crez un rpertoire nomm compile, et
   allez dedans. Tout le travail sera fait dans ce rpertoire, ce qui
   simplifiera le nettoyage (les dveloppeurs ne se sont pas vraiment
   souci du 'make clean' pour l'instant).

mkdir compile
cd compile

   Lancez ../configure. Pour utiliser les paquetages supplmentaires,
   vous devez les spcifier avec --enable-add-ons, comme
   --enable-add-ons=linuxthreads,crypt,localedata. Vous devrez aussi
   srement spcifier les chemins o elle sera installe. Pour coller aux
   distributions Linux normales, spcifiez --prefix=/usr. (Quand on
   spcifie le prfixe /usr sur un systme Linux, configure sait ajuster
   les autres chemins pour placer libc.so et d'autres bibliothques
   importantes dans /lib.) La ligne de commande complte de configure
   serait :

 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr

  Compilation

   Pour compiler et vrifier, lancez :

 make
 make check

5.2 Prparation  l'installation

   Vous devez maintenant dplacer certains fichiers pour vous prparer 
   l'arrive de la nouvelle bibliothque, que vous l'installiez  partir
   des sources ou de binaires. Tous les nouveaux programmes compils
   seront lis  glibc, mais les vieux programmes qui ne sont pas lis en
   statique dpendront encore de libc 5, et vous ne pouvez donc pas
   craser l'ancienne version.

    1. Crez un nouveau rpertoire pour y mettre les anciens fichiers :

 mkdir -p /usr/i486-linuxlibc5/lib

    2. Les vieux fichiers d'en-tte doivent tre vacus de /usr/include
       :

 mv /usr/include /usr/i486-linuxlibc5/include

    3. Crez un nouveau rpertoire d'en-ttes et activez les liens vers
       d'autres en-ttes :

 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 ajusts au besoin selon votre distribution.
       Rien que la Slackware installe les en-ttes g++ dans
       /usr/local/g++-include, alors que Debian met les en-ttes dans
       /usr/include/g++, et fait un lien de /usr/lib/g++-include vers
       /usr/include/g++. Dans d'autres cas, vous voudrez srement
       dplacer le rpertoire d'en-ttes g++ d'origine  son ancien
       emplacement /usr/include.
    4. Remettre des fichiers d'en-ttes et des liens supplmentaires.
       Certaines bibliothques non standards comme ncurses installent des
       fichiers dans /usr/include ou installent un lien vers leur
       rpertoire d'en-tte dans /usr/include. Ces fichiers et liens
       doivent tre remis en place pour pouvoir utiliser les
       bibliothques supplmentaires correctement.
    5. Ajoutez le nouveau rpertoire de bibliothque (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
       installe.
    6. Dplacez ou copiez toutes les anciennes bibliothques C dans le
       nouveau rpertoire.

 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 copies et non dplaces si
       /usr est une partition diffrente de /, parce qu'elles sont
       ncessaires aux programmes utiliss pour dmarrer Linux et doivent
       tre situes sur la partition racine.
    7. Dplacez les fichiers /usr/lib/*.o dans le nouveau rpertoire.

 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 bibliothque aprs avoir dplac vos
       bibliothques.

 ldconfig -v

5.3 Installation  partir du paquetage binaire

   Si vous installez glibc  partir de binaires prcompils, 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 diffrente, substituez les
   noms de fichiers adquats.

5.4 Installation  partir des sources

   Pour installer la bibliothque  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 dterminer 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 systme, et 2.7.2.2 est la
   version. Vous devez copier /usr/lib/gcc-lib/<systme> dans l'ancien
   rpertoire systme :

 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxlibc5

   Allez dans le rpertoire d'origine et dans le rpertoire 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 bibliothque 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, crez 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 vrifier 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 gnre "hello world!" quand vous le lancez,
   l'installation est russie.

6. Compilation avec la libc non principale

   Il y a des fois o vous voudrez utiliser une bibliothque diffrente
   pour compiler vos programmes. Cette section explique comment faire, en
   utilisant les noms de rpertoires et d'installation utiliss dans les
   exemples des deux sections prcdentes. 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 dmarrage,
   rappelez-vous que si le programme est li dynamiquement, et est
   utilis avant que les partitions non-racines soient montes, toutes
   les bibliothques lies doivent tre sur la partition racine. En
   suivant la procdure d'installation de la section prcdente pour
   installer glibc comme bibliothque 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 dmarrage.
   Cependant, si /usr est sur une partition diffrente et que vous
   installez glibc comme bibliothque 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 monte.

6.2 Compilation des programmes avec une glibc de test

   Pour compiler un programme avec glibc en installation de test, vous
   devez mettre  zro les chemins d'en-tte pour qu'ils pointent vers
   les en-ttes glibc. En spcifiant "-nostdinc", vous annulerez les
   chemins normaux, et "-I/usr/i486-linuxglibc2/include" pointera vers
   les enttes de glibc. Vous devrez aussi spcifier les en-ttes gcc,
   que l'on trouve dans /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include
   (en supposant que vous ayez install la bibliothque de test dans
   i486-linuxglibc2 avec gcc version 2.7.2.2).

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

   Pour la plupart des programmes, vous pouvez spcifier 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-lin
uxglibc2/2.7.2.2/include -b i486-linuxglibc2
 LDFLAGS = -b i486-linuxglibc2

   Si vous utilisez un script configure, dfinissez 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
   gnrs par celui-ci devraient contenir les variables $CFLAGS et
   $LDFLAGS correctes. Tous les scripts configure ne tiendront pas compte
   des variables, et par consquent vous devriez vrifier aprs avoir
   lanc configure et diter les makefiles  la main si ncessaire.

   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 spcification 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 bibliothque
principale

   Pour compiler un programme avec vos anciennes bibliothques quand vous
   avez install glibc comme bibliothque principale, vous devez mettre 
   zro les chemins d'en-ttes vers les anciennes en-ttes. En spcifiant
   "-nostdinc", vous annulerez les chemins normaux et
   "-I/usr/i486-linuxlibc5/include" pointera vers les en-ttes libc 5.
   Vous devez aussi indiquer
   "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" pour inclure les
   en-ttes spcifiques  gcc. Rappelez-vous d'ajuster ces chemins selon
   la manire dont vous avez nomm les nouveaux rpertoires et selon
   votre version de gcc.

   Pour lier un programme  votre ancienne libc, vous devez spcifier 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-linu
xlibc5/2.7.2.2/include -b i486-linuxlibc5
 LDFLAGS = -b i486-linuxlibc5

   Si vous utilisez un script configure, dfinissez 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
   gnrs par celui-ci devraient contenir les variables $CFLAGS et
   $LDFLAGS corrects. Tous les scripts configure ne verront pas les
   variables, et vous devriez donc vrifier aprs avoir lanc configure
   et diter les makefiles si ncessaire.

   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 bibliothque mathmatique, elle est
   donc lie  libm. Puisque votre bibliothque libg++ existante aura t
   compile avec votre ancienne bibliothque, vous devrez recompiler
   libg++ avec glibc ou obtenir une copie binaire. Les dernires sources
   de libg++, en mme 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 bibliothque de test, vous devez
   installer les fichiers dans le rpertoire dans lequel vous avez
   install glibc (comme /usr/i486-linuxglibc2 pour l'exemple des
   sections prcdentes). Si vous installez  partir du paquetage binaire
   (ce que je recommanderais, puisque je n'ai jamais eu de chance pour
   compiler libg++ de cette manire), vous devez extraire les fichiers
   dans un rpertoire temporaire et dplacer tous les fichiers usr/lib/
   dans le rpertoire <rpertoire install>/lib/, les fichiers
   usr/include/ dans le rpertoire <rpertoire install>/include/
   (rappelez-vous d'effacer le lien include/g++ avant !), et les fichiers
   usr/bin/ dans le rpertoire <rpertoire install>/bin/.

7.2 Installation de libg++ pour une installation glibc principale

   Si vous avez install glibc comme bibliothque principale, vous devez
   d'abord dplacer vos anciens fichiers libg++ dans l'ancien rpertoire
   libc si vous voulez encore pouvoir compiler des programmes g++ avec
   votre ancienne libc. La meilleure faon de procder est probablement
   d'installer une nouvelle copie de libg++ compile avec libc 5 comme
   dans la section prcdente, 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 rpertoire d'en-ttes 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 gnral
   en ajoutant  la variable $CXXFLAGS :

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

8. Indiquer les bogues

   Si vous pensez que la bibliothque est vrole, veuillez d'abord lire
   la FAQ. Il se peut que d'autres personnes aient eu ce problme et
   qu'il y ait une solution simple. Vous devriez aussi regarder la partie
   "Outils recommands pour l'installation de la bibliothque 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 manire de le faire est de regarder si la
   bibliothque C GNU se comporte de la mme manire qu'une autre
   bibliothque C. S'il en est ainsi, vous vous tes tromp et les
   bibliothques ont raison (mais pas forcment). Dans le cas contraire,
   l'une des bibliothques a probablement tort.

   Ensuite, dirigez-vous vers
   http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl, et parcourez la
   base de donnes des bugs. Vrifiez bien que le problme n'a pas dj
   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 sr d'avoir trouv un bug, essayez de le
   rduire au plus petit test pratique qui reproduit le problme. Dans le
   cas d'une bibliothque C, vous ne devrez probablement en tre rduit
   qu' un appel de fonction de la bibliothque, 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 rsultats que vous avez obtenus, ce que vous pensez tre le
   problme (si vous avez pens  quelque chose), le type de votre
   systme, les versions de la bibliothque C GNU, du compilateur GNU CC
   et des GNU binutils que vous utilisez. Ajoutez aussi les fichiers
   config.status et config.mak crs en lanant configure ; ils seront
   dans le rpertoire qui tait le rpertoire courant quand vous avez
   lanc configure.

   Vous devez envoyer tous les rapports de bug pour la bibliothque 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'intermdiaire de l'interface Web de GNATS 
   http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl.

   Les suggestions et les questions doivent tre envoyes  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 bibliothque C GNU  <bug-gcc@prep.ai.mit.edu>. Cette liste
   s'occupe des rapports de bug de GNU CC. GNU CC et la bibliothque C
   GNU sont des entits distinctes maintenues par des personnes
   diffrentes.

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 rpertoire /usr/lib/gcc-lib/<nouveau
   rpertoire>/<version gcc>. Si vous utilisez un systme 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-linu
x.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:%{p
rofile: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) -Am
achine(i386)

 *cross_compile:
 0

 *multilib:
 . ;

10. Divers

10.1 Informations supplmentaires

  Pages Web

     * Page d'accueil de la bibliothque C GNU chez FSF
     * Utilisation de GNU Libc 2 avec Linux
     * Installer glibc-2 sur Linux
     * HOWTO libc5 vers libc6 Debian

  Groupes de news

     * comp.os.linux.development.system
     * comp.os.linux.development.apps
     * linux.dev.kernel
     * gnu.bugs.glibc

  Listes de distribution

   _Liste de discussion Glibc 2 Linux._
          Cette liste est destine  la discussion entre les utilisateurs
          Linux qui ont install glibc2, la nouvelle bibliothque C. Les
          sujets peuvent comprendre des problmes 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 :

     * Allex <allex@ms2.accmail.com.tw>
     * Mark Brown <M.A.Brown-4@sms.ed.ac.uk>
     * Ulrich Drepper <drepper@gnu.ai.mit.edu>
     * Scott K. Ellis <ellis@valueweb.net>
     * Aron Griffis <agriffis@coat.com>
     * Andreas Jaeger <aj@arthur.rhein-neckar.de>
     * Frodo Looijaard <frodol@dds.nl>
     * Ryan McGuire <rmcguire@freenet.columbus.oh.us>
     * Shaya Potter <spotter@capaccess.org>
     * Les Schaffer <godzilla@futuris.net>
     * Andy Sewell <puck@pookhill.demon.co.uk>
     * Gary Shea <shea@gtsdesign.com>
     * Stephane <sr@adb.fr>
     * Jan Vandenbos <jan@imaxx.net>

   Les traductions de ce document sont faites par :

     * chinois : Allex <allex@ms2.accmail.com.tw>
     * franais : Graud Canet<canet@labri.u-bordeaux.fr>
     * japonais : Kazuyuki Okamoto <ikko-@pacific.rim.or.jp>

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
   rsoudre les problmes qu'on m'envoie par courrier lectronique.
   J'apprcie 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.
