  HOWTO Glibc 2
  Eric Green, ejg3@cornell.edu
  v1.5, 8 fvrier 1998

  de la version franaise par  Graud Canet, canet@labri.u-bordeaux.fr)
  Le HOWTO Glibc 2 couvre l'installation et l'utilisation de la bib
  liothque C GNU version 2 (libc 6) sur les systmes Linux.
  ______________________________________________________________________

  Table des matires
























































  1. Introduction

     1.1 Note du traducteur
     1.2  propos de glibc 2
     1.3  propos de ce document
     1.4 Changements rcents dans ce document

  2. Choix de la mthode d'installation

  3. Obtenir la bibliothque

  4. Installation comme bibliothque de test

     4.1 Compilation et installation
        4.1.1 lments requis
        4.1.2 Extraction des sources
        4.1.3 Configuration
        4.1.4 Compilation et installation
     4.2 Mise  jour du chargeur de liens dynamique
     4.3 Configuration pour gcc
     4.4 Mise  jour des liens des fichiers d'en-tte
     4.5 Test de l'installation

  5. Installation comme bibliothque C principale

     5.1 Construction de la bibliothque  partir des sources
        5.1.1 lments requis
        5.1.2 Extraction des sources
        5.1.3 Configuration
        5.1.4 Compilation
     5.2 Prparation  l'installation
     5.3 Installation  partir du paquetage binaire
     5.4 Installation  partir des sources
     5.5 Mise  jour des specs gcc
     5.6 Test de l'installation

  6. Compilation avec la libc non principale

     6.1 Avertissement concernant l'utilisation de libcs non principales
     6.2 Compilation des programmes avec une glibc de test
     6.3 Compilation des programmes avec libc 5 quand glibc est la bibliothque principale

  7. Compilation des programmes C++

     7.1 Installation de libg++ pour une installation glibc de test
     7.2 Installation de libg++ pour une installation glibc principale
     7.3 Compilation de programmes C++ avec la libc non principale

  8. Indiquer les bogues

  9. Fichiers specs d'exemple

  10. Divers

     10.1 Informations supplmentaires
        10.1.1 Pages Web
        10.1.2 Groupes de news
        10.1.3 Listes de distribution
     10.2 Remerciements
     10.3 Retour d'informations
     10.4 Copyright


  ______________________________________________________________________


  11..  IInnttrroodduuccttiioonn



  11..11..  NNoottee dduu ttrraadduucctteeuurr


  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1..22..   pprrooppooss ddee gglliibbcc 2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 :


     CCrryypptt
        Le paquetage UFC-crypt pour le cryptage des donnes. Il est
        disponible sparment  cause de restrictions  l'exportation.

     LLiinnuuxxTThhrreeaaddss
        Une mise en oeuvre de l'interface Posix 1003.1c "pthread".

     LLooccaallee ddaattaa
        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1..33..   pprrooppooss ddee ccee ddooccuummeenntt


  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 <http://sunsite.unc.edu/LDP>, ou bien vous en
  trouverez une version 
  <http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html>.


  11..44..  CChhaannggeemmeennttss rrcceennttss ddaannss ccee ddooccuummeenntt


  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2..  CChhooiixx ddee llaa mmtthhooddee dd''iinnssttaallllaattiioonn


  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 (_c_r_o_s_s_-_c_o_m_p_i_l_e_r) 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 <http://huizen.dds.nl/~frodol/glibc/> (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
  <http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html> 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3..  OObbtteenniirr llaa bbiibblliiootthhqquuee


  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-
     linux.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.bin.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4..  IInnssttaallllaattiioonn ccoommmmee bbiibblliiootthhqquuee ddee tteesstt


  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4..11..  CCoommppiillaattiioonn eett iinnssttaallllaattiioonn



  44..11..11..  llmmeennttss rreeqquuiiss



     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 _s_n_a_p_s_h_o_t)

    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.


  44..11..22..  EExxttrraaccttiioonn ddeess ssoouurrcceess


  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.


  44..11..33..  CCoonnffiigguurraattiioonn


  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






  44..11..44..  CCoommppiillaattiioonn eett iinnssttaallllaattiioonn


  Pour compiler et vrifier, lancez :



        make
        make check





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





   make install






  44..22..  MMiissee  jjoouurr dduu cchhaarrggeeuurr ddee lliieennss ddyynnaammiiqquuee



  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4..33..  CCoonnffiigguurraattiioonn ppoouurr ggcccc


  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..44..  MMiissee  jjoouurr ddeess lliieennss ddeess ffiicchhiieerrss dd''eenn--ttttee


  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4..55..  TTeesstt ddee ll''iinnssttaallllaattiioonn


  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5..  IInnssttaallllaattiioonn ccoommmmee bbiibblliiootthhqquuee CC pprriinncciippaallee


  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5..11..  CCoonnssttrruuccttiioonn ddee llaa bbiibblliiootthhqquuee  ppaarrttiirr ddeess ssoouurrcceess


  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.




  55..11..11..  llmmeennttss rreeqquuiiss



    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.



  55..11..22..  EExxttrraaccttiioonn ddeess ssoouurrcceess


  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.


  55..11..33..  CCoonnffiigguurraattiioonn


  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





  55..11..44..  CCoommppiillaattiioonn


  Pour compiler et vrifier, lancez :



        make
        make check







  55..22..  PPrrppaarraattiioonn  ll''iinnssttaallllaattiioonn


  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) _e_n _h_a_u_t 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5..33..  IInnssttaallllaattiioonn  ppaarrttiirr dduu ppaaqquueettaaggee bbiinnaaiirree


  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5..44..  IInnssttaallllaattiioonn  ppaarrttiirr ddeess ssoouurrcceess


  Pour installer la bibliothque  partir des sources, lancez :



        make install
        ldconfig -v






  55..55..  MMiissee  jjoouurr ddeess ssppeeccss ggcccc


  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5..66..  TTeesstt ddee ll''iinnssttaallllaattiioonn


  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6..  CCoommppiillaattiioonn aavveecc llaa lliibbcc nnoonn pprriinncciippaallee


  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6..11..  AAvveerrttiisssseemmeenntt ccoonncceerrnnaanntt ll''uuttiilliissaattiioonn ddee lliibbccss nnoonn pprriinncciippaalleess


  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6..22..  CCoommppiillaattiioonn ddeess pprrooggrraammmmeess aavveecc uunnee gglliibbcc ddee tteesstt


  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-linuxglibc2/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6..33..  CCoommppiillaattiioonn ddeess pprrooggrraammmmeess aavveecc lliibbcc 55 qquuaanndd gglliibbcc eesstt llaa bbiibb
  lliiootthhqquuee pprriinncciippaallee


  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-linuxlibc5/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7..  CCoommppiillaattiioonn ddeess pprrooggrraammmmeess C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7..11..  IInnssttaallllaattiioonn ddee lliibbgg++++ ppoouurr uunnee iinnssttaallllaattiioonn gglliibbcc ddee tteesstt


  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7..22..  IInnssttaallllaattiioonn ddee lliibbgg++++ ppoouurr uunnee iinnssttaallllaattiioonn gglliibbcc pprriinncciippaallee


  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7..33..  CCoommppiillaattiioonn ddee pprrooggrraammmmeess CC++++ aavveecc llaa lliibbcc nnoonn pprriinncciippaallee


  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-linuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglibc2







  88..  IInnddiiqquueerr lleess bboogguueess


  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9..  FFiicchhiieerrss ssppeeccss dd''eexxeemmppllee


  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-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:
   . ;






  1100..  DDiivveerrss



  1100..11..  IInnffoorrmmaattiioonnss ssuuppppllmmeennttaaiirreess



  1100..11..11..  PPaaggeess WWeebb



    Page d'accueil de la bibliothque C GNU chez FSF
     <http://www.gnu.org/software/libc/libc.html>


    Utilisation de GNU Libc 2 avec Linux
     <http://www.imaxx.net/~thrytis/glibc/>

    Installer glibc-2 sur Linux <http://huizen.dds.nl/~frodol/glibc/>

    HOWTO libc5 vers libc6 Debian
     <http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html>


  1100..11..22..  GGrroouuppeess ddee nneewwss



    comp.os.linux.development.system

    comp.os.linux.development.apps

    linux.dev.kernel

    gnu.bugs.glibc


  1100..11..33..  LLiisstteess ddee ddiissttrriibbuuttiioonn



     LLiissttee ddee ddiissccuussssiioonn GGlliibbcc 22 LLiinnuuxx..
        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
        <mailto:Majordomo@ricardo.ecn.wfu.edu> avec dans le corps
        "subscribe glibc-linux <votre adresse email>".


  1100..22..  RReemmeerrcciieemmeennttss


  J'ai vol une bonne partie de ces informations sur la page web de GNU
  Libc <http://www.gnu.org/software/libc/libc.html> 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>


  1100..33..  RReettoouurr dd''iinnffoorrmmaattiioonnss


  En plus d'crire ce HOWTO, maintenir la page glibc 2 pour Linux
  <http://www.imaxx.net/~thrytis/glibc>, 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 <mailto:ejg3@cornell.edu>.


  1100..44..  CCooppyyrriigghhtt


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



























