  HOWTO Glibc 2
  Eric  Green,  thrytis@imaxx.net, traduit par Olivier Tharan,
  tharan@int-evry.fr
  v1.4, 11 janvier 1997

  Le HOWTO Glibc 2 couvre l'installation et l'utilisation de la  biblio-
  theque C GNU version 2 (libc 6) sur les systemes Linux.

  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

  Le  document  est  truffe de signes "cabalistiques" comme des diese et
  des pourcent, dont la representation en SGML est respectivement  &num;
  et &percnt; ; le source LaTeX genere par les outils de conversion SGML
  introduit le signe antislash  devant  ces  signes  et  reste  dans  la
  version  PostScript  de  ce  document. Les donnees d'exemple sont donc
  erronees, mais vous  pouvez  vous  rapporter  a  la  version  HTML  du
  document  qui  n'a  pas  ces erreurs. La version d'origine connait les
  memes problemes.

  11..22..  AA pprrooppooss ddee gglliibbcc 22

  Glibc 2 est la toute derniere version de la  bibliotheque  C  du  GNU.
  Elle fonctionne pour l'instant sans modifications sur les systemes GNU
  Hurd, et les systemes Linux sur architectures i386, m68k et alpha. Les
  adaptations  pour  Linux  PowerPC, MIPS, Sparc, Sparc 64 et ARM seront
  dans la version 2.1. A l'avenir, d'autres  architectures  et  systemes
  d'exploitation seront supportes.

  Sur  Linux,  glibc  2 est utilisee comme libc avec un numero majeur de
  version egal a 6, le successeur de la libc  5  pour  Linux.  Elle  est
  destinee  par  les developpeurs de la libc Linux a remplacer en fin de
  compte la libc 5. A l'heure de la  version  2.0.6,  on  considere  que
  glibc  est  de qualite suffisante pour etre utilisee en production. La
  version 2.1 (a venir  dans  un  futur  proche)  sera  prete  pour  une
  utilisation   normale   avec   l'ajout  de  plus  de  portages  et  de
  possibilites.

  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  donnees.  Il  est
        disponible separement a cause de restrictions a 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 donnees necessaires a la construction des fichiers
        de   donnees   locale    pour    utiliser    les    possibilites
        d'internationalisation de la glibc.

  Les extensions crypt et LinuxThreads sont fortement recommandees... Ne
  pas  les  utiliser  risque  de  les  rendre  incompatibles  avec   les
  bibliotheques  d'autres systemes. (Si vous ne voulez pas les utiliser,
  vous devez ajouter l'option --disable-sanity-checks quand vous  lancez
  configure.)

  11..33..  AA 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  bibliotheque glibc 2 sur un
  systeme Linux existant. Il est fait pour les utilisateurs de  systemes
  a  base  de  processeurs Intel qui utilisent pour l'instant la libc 5,
  mais les utilisateurs d'autres systemes et de bibliotheques similaires
  (comme  la  glibc  1)  devraient  pouvoir utiliser ces informations en
  substituant les  noms  de  fichiers  et  d'architecture  adequats  aux
  endroits appropries.

  La   copie   la  plus  recente  de  ce  HOWTO  fait  partie  du  Linux
  Documentation Project <http://sunsite.unc.edu/LDP>, ou  bien  vous  en
  trouverez                 une                 version                a
  <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reecceennttss ddaannss ccee ddooccuummeenntt

  Differences entre la version 1.4 et 1.3 :

  +o  Change l'etat courant d'experimental a production.

  +o  Mis a jour la liste des portages en developpement.

  +o  Mis a jour la derniere version en 2.0.6.

  Differences entre la version 1.3 et 1.2 :

  +o  Ajoute une note sur les extensions recommandees.

  +o  Ajoute des informations sur la liste de distribution glibc-linux.

  +o  Mis a jour les informations sur la distribution Redhat basee sur la
     glibc.

  +o  Mis a jour l'emplacement des paquetages glibc Debian.

  +o  Ajoute la necessite de texinfo et sa version.

  22..  CChhooiixx ddee llaa mmeetthhooddee dd''iinnssttaallllaattiioonn

  Il y a plusieurs manieres d'installer glibc. Vous pouvez installer les
  bibliotheques  pour  les  tester,  en  utilisant   les   bibliotheques
  existantes  par defaut tout en vous permettant d'essayer les nouvelles
  bibliotheques en utilisant des options differentes a la compilation de
  votre  programme.  L'installation  de  cette maniere facilite aussi la
  desinstallation de glibc dans le futur (bien que  tout  programme  lie
  avec  la  glibc  ne  fonctionnera  plus apres que vous ayez enleve les
  bibliotheques). L'utilisation de glibc comme une bibliotheque de  test
  demande  que vous compiliez les bibliotheques a partir des sources. Il
  n'y a  pas  de  distribution  binaire  pour  l'installation  de  cette
  maniere. Cette installation est decrite dans la section ``installation
  comme bibliotheque de test''.

  L'autre maniere d'installer decrite dans ce  document  est  d'utiliser
  glibc  comme bibliotheque principale. Tous les nouveaux programmes que
  vous compilerez sur votre systeme utiliseront  glibc,  bien  que  vous
  pourrez  lier  des  programmes  avec  vos  anciennes  bibliotheques en
  utilisant des options differentes a la compilation. Vous  pouvez  soit
  installer  les  bibliotheques  a  partir  de  binaires, ou compiler la
  bibliotheque  vous-meme.  Si   vous   voulez   changer   les   options
  d'optimisation  ou  de  configuration,  ou  utiliser une extension qui
  n'est pas distribuee en paquetage  binaire,  vous  devrez  obtenir  la
  distribution   de  sources  et  compiler  vous-meme.  Cette  procedure
  d'installation  est  decrite  dans  la  section  ``installation  comme
  bibliotheque C principale''.

  Frodo  Looijaard decrit encore une autre maniere d'installer glibc. Sa
  methode implique l'installation de glibc comme bibliotheque secondaire
  et  la  mise en place d'un compilateur croise (cross-compilateur) pour
  compiler en utilisant glibc. La procedure  d'installation  pour  cette
  methode   est   plus   compliquee   que  l'installation  en  tant  que
  bibliotheque de  test  decrite  dans  ce  document,  mais  permet  une
  compilation  facilitee  en editant les liens avec glibc. Cette methode
  est  decrite  dans  son   document   Installer   glibc-2   sur   Linux
  <http://huizen.dds.nl/~frodol/glibc/>.

  Si  vous  utilisez en ce moment un systeme Debian 1.3 et ne voulez pas
  le mettre a 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> decrit la
  maniere  d'utiliser  les paquetages Debian pour mettre votre systeme a
  jour.

  Si vous installez glibc 2 sur un systeme important, vous voudrez  sans
  doute  utiliser l'installation de test. Meme s'il n'y a pas de bogues,
  certains programmes devront etre modifies avant de compiler a cause de
  changements  dans les prototypes de fonctions et les types de donnees.

  33..  OObbtteenniirr llaa bbiibblliiootthheeqquuee

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

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz>

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz>

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz>

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz>

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

  +o  Intel x86:

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz>

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.gz>

  +o  Alpha:

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux.tar.gz>

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-
     linux.tar.gz>

  +o  m68k:

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.gz>

  +o  <ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-
     linux.bin.tar.gz>

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

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

  Si vous utilisez une distribution  Debian,  vous  pouvez  obtenir  les
  paquetages             pour            glibc            2            a
  <ftp://ftp.debian.org/debian/dists/unstable/main/>. Les fichiers  sont
  nommes  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heeqquuee ddee tteesstt

  Cette  section  couvre l'installation de glibc 2 comme bibliotheque de
  test. Tout ce  que  vous  compilerez  sera  lie  a  vos  bibliotheques
  existantes sauf si vous donnez des parametres supplementaires pour les
  lier aux nouvelles bibliotheques. Il semble que  les  chemins  d'acces
  soient  compiles  dans  un  certain nombre de fichiers, et vous devrez
  probablement installer la bibliotheque a 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..  EElleemmeennttss rreeqquuiiss

  +o  A peu pres 150 Mo d'espace disque libre

  +o  GNU make 3.75

  +o  gcc >= 2.7.2 (ou mieux, 2.7.2.1)

  +o  binutils 2.8.1 (pour les alpha vous devez utiliser une mise a  jour
     temporaire ou snapshot)

  +o  bash 2.0

  +o  autoconf 2.12 (si vous changez configure.in)

  +o  texinfo 3.11

  Sur  un i586 a 133 MHz avec 64 Mo de RAM, il faut environ trois heures
  pour compiler les bibliotheques completes avec les extensions. Sur  un
  i686 a 200 MHz charge, 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 facon de proceder 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 repertoires linuxthreads, crypt et localedate dans  le
  repertoire glibc-2.0.6 ou 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 repertoire glibc-2.0.6, creez un repertoire appele compile, et
  deplacez-vous dedans. Tout le  travail  doit  etre  effectue  dans  ce
  repertoire,  ce  qui simplifiera le nettoyage. (Les developpeurs ne se
  sont pas tres occupes de rendre 'make clean' parfait pour  l'instant.)

        mkdir compile
        cd compile

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

        make
        make check

  Si le 'make check' reussit, installez la bibliotheque :

        make install

  44..22..  MMiissee aa 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. Creez un lien a 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 bibliotheque dont l'emplacement est fixe une fois qu'un
  programme  est lie, et l'utilisation d'un lien dans /lib facilitera le
  passage a glibc en tant que bibliotheque C principale quand la version
  stable sortira.

  2. Editez  /etc/ld.so.conf.  Vous  devez  ajouter  le  chemin  vers le
     repertoire lib dans lequel se trouvent les nouvelles  bibliotheques
     a    la   fin   du   fichier,   qui   sera   <prefixe>/lib,   comme
     /usr/i486-linuxglibc2/lib dans  l'exemple  ci-dessus.  Apres  avoir
     modifie /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   derniere   etape   de  l'installation  est  la  mise  a  jour  de
  /usr/lib/gcc-lib pour que gcc sache  comment  utiliser  les  nouvelles
  bibliotheques.   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 systeme, et 2.7.2.2 est la
  version. Vous devez copier /usr/lib/gcc-lib/<systeme> vers le  nouveau
  repertoire systeme de test :

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

  Allez dans le nouveau repertoire systeme de test et dans le repertoire
  version

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

  et editez le fichier specs se trouvant dans  ce  repertoire.  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 bibliotheque 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 aa 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teettee

  Vous  devez  creer  des liens dans votre nouveau repertoire d'en-tetes
  vers d'autres repertoires d'en-tetes :

        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-etre  d'autres  bibliotheques   comme   ncurses   qui
  necessitent d'avoir leurs fichiers d'en-tetes dans ce repertoire. Vous
  devriez copier ou faire un lien vers ces fichiers depuis /usr/include.
  (Certaines  bibliotheques auront besoin d'etre recompilees 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, creez le programme suivant dans un fichier
  appele glibc.c :

   #include <stdio.h>

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

  et  compilez-le  avec  les  options  "-b  <repertoire  d'installation>
  -nostdinc    -I<repertoire   d'installation>/include   -I/usr/lib/gcc-
  lib/<nouveau systeme>/<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 verifier que le programme a ete lie 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 effectues et qu'il genere "hello
  world!" quand vous le lancez, l'installation a fonctionne.

  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heeqquuee CC pprriinncciippaallee

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

  Si  vous  utilisez  Redhat ou Debian et avez charge les fichier rpm ou
  deb adequats, voyez les instructions d'installation Redhat ou  Debian.
  Vous pourrez 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heeqquuee aa 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 a
  partir des sources. Vous devez compiler la bibliotheque 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..  EElleemmeennttss rreeqquuiiss

  +o  Environ 150 Mo d'espace disque libre

  +o  GNU make 3.75

  +o  gcc >= 2.7.2 (ou mieux, 2.7.2.1)

  +o  binutils 2.8.1 (pour les alpha  vous  aurez  besoin  d'une  version
     'snapshot')

  +o  bash 2.0

  +o  autoconf 2.12 (si vous changez configure.in)

  +o  texinfo 3.11

  Sur  un i586 a 133 MHz avec 64 Mo de RAM, il faut environ trois heures
  pour compiler toutes les bibliotheques avec  les  extensions.  Sur  un
  i686 a 200 MHz charge, 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 facon 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 repertoires linuxthreads, crypt et localedata dans  le
  repertoire glibc-2.0.6 ou 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 repertoire glibc-2.0.6, creez un repertoire nomme compile, et
  allez dedans. Tout le travail sera fait dans  ce  repertoire,  ce  qui
  simplifiera le nettoyage. (Les developpeurs n'ont pas vraiment pense a
  parfaire le 'make clean' pour l'instant.)

       mkdir compile
       cd compile

  Lancez ../configure. Pour  utiliser  les  paquetages  supplementaires,
  vous  devez  les  specifier avec --enable-add-ons, comme --enable-add-
  ons=linuxthreads,crypt,localedata.   Vous   devrez   aussi    surement
  specifier  les  chemins  ou  elle  sera  installee.  Pour  coller  aux
  distributions  Linux  normales,  specifiez  --prefix=/usr.  (Quand  on
  specifie  le prefixe /usr sur un systeme Linux, configure sait ajuster
  les autres chemins  pour  placer  libc.so  et  d'autres  bibliotheques
  importantes  dans  /lib.)  La  ligne de commande complete 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 verifier, lancez :

        make
        make check

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

  Vous devez maintenant deplacer certains fichiers pour vous preparer  a
  l'arrivee  de la nouvelle bibliotheque, que vous l'installiez a partir
  des sources ou de binaires.  Tous  les  nouveaux  programmes  compiles
  seront lies a glibc, mais les vieux programmes qui ne sont pas lies en
  statique dependront encore de libc 5,  et  vous  ne  pouvez  donc  pas
  ecraser l'ancienne version.

  1. Creez un nouveau repertoire pour y mettre les anciens fichiers :

        mkdir -p /usr/i486-linuxlibc5/lib

  2. Les vieux fichiers d'en-tete doivent etre evacues de /usr/include :

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

  3. Creez un nouveau repertoire d'en-tetes et activez  les  liens  vers
     d'autres en-tetes :

   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  etre  ajustes au besoin selon votre distribution.
  Rien   que   la   Slackware   installe   les   en-tetes    g++    dans
  /usr/local/g++-include,   alors  que  Debian  met  les  en-tetes  dans
  /usr/include/g++,  et  fait  un  lien  de  /usr/lib/g++-include   vers
  /usr/include/g++. Dans d'autres cas, vous voudrez surement deplacer le
  repertoire  d'en-tetes  g++  d'origine  a   son   ancien   emplacement
  /usr/include.

  4. Remettre  des  fichiers  d'en-tetes  et  des liens supplementaires.
     Certaines bibliotheques non standards comme ncurses installent  des
     fichiers   dans  /usr/include  ou  installent  un  lien  vers  leur
     repertoire d'en-tete  dans  /usr/include.  Ces  fichiers  et  liens
     doivent etre remis en place pour pouvoir utiliser les bibliotheques
     supplementaires correctement.

  5. Ajoutez   le   nouveau   repertoire    de    bibliotheque    (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  installe  pour  eviter
     d'avoir des messages bizarres une fois que glibc sera installee.

  6. Deplacez  ou  copiez  toutes  les anciennes bibliotheques C dans le
     nouveau repertoire.

        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 etre copiees et non deplacees  si  /usr
  est une partition differente de /, parce qu'elles sont necessaires aux
  programmes utilises pour demarrer Linux et doivent etre situees sur la
  partition racine.

  7. Deplacez les fichiers /usr/lib/*.o dans le nouveau repertoire.

   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  a  jour votre cache de bibliotheque apres avoir deplace vos
     bibliotheques.

        ldconfig -v

  55..33..  IInnssttaallllaattiioonn aa 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 a partir de binaires precompiles, 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 differentes, substituez
  les noms de fichiers adequats.

  55..44..  IInnssttaallllaattiioonn aa ppaarrttiirr ddeess ssoouurrcceess

  Pour installer la bibliotheque a partir des sources, lancez :

        make install
        ldconfig -v

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

  L'etape finale de l'installation (a la  fois  pour  les  installations
  binaires et sources) est de mettre a jour le fichier specs de gcc pour
  que vous puissiez lier vos programmes proprement. Pour determiner quel
  fichier specs est utilise 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 systeme, et 2.7.2.2 est la
  version. Vous devez copier  /usr/lib/gcc-lib/<systeme>  dans  l'ancien
  repertoire systeme :

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

  Allez dans le repertoire d'origine et dans le repertoire de version

        cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2

  et  editez  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 bibliotheque 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, creez le programme suivant dans un fichier
  appele glibc.c :

        #include <stdio.h>

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

  et compilez le programme.

        % gcc glibc.c -o glibc

  Utilisez  ldd pour verifier que le programme a ete lie 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 ca compile et que ca genere "hello world!" quand  vous  le  lancez,
  l'installation est reussie.

  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 ou vous voudrez utiliser une bibliotheque differente
  pour compiler vos programmes. Cette section explique comment faire, en
  utilisant  les noms de repertoires et d'installation utilises dans les
  exemples des deux sections precedentes. Rappelez-vous de  changer  les
  noms pour coller a 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 utilise dans le processus de demarrage,
  rappelez-vous  que si le programme est lie en dynamique et est utilise
  avant  que  les  partitions  non  root  soient  montees,  toutes   les
  bibliotheques  liees doivent etre sur la partition root. En suivant la
  procedure d'installation de la section precedente pour installer glibc
  comme  bibliotheque C principale, la vieille libc reste dans /lib, qui
  sera sur votre partition root. Ceci veut dire que tous vos  programmes
  fonctionneront  encore  lors  du demarrage. Cependant, si /usr est sur
  une  partition  differente  et  que   vous   installez   glibc   comme
  bibliotheque  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 montee.

  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 a zero les chemins d'en-tete pour  qu'ils  pointent  vers
  les  en-tetes  glibc.  En  specifiant  "-nostdinc", vous annulerez les
  chemins normaux, et  "-I/usr/i486-linuxglibc2/include"  pointera  vers
  les  entetes  de  glibc. Vous devrez aussi specifier les en-tetes gcc,
  que l'on trouve dans /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include
  (en  supposant  que  vous  ayez  installe la bibliotheque de test dans
  i486-linuxglibc2 avec gcc version 2.7.2.2).

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

  Pour la plupart des programmes, vous pouvez  specifier  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, definissez 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
  generes par celui-ci  devraient  contenir  les  variables  $CFLAGS  et
  $LDFLAGS correctes. Tous les scripts configure ne tiendront pas compte
  des variables, et par consequent vous  devriez  verifier  apres  avoir
  lance configure et editer les makefiles a la main si necessaire.

  Si les programmes que vous compilez n'appellent que gcc (et pas cpp ou
  les binutils directement), vous pouvez utiliser le script suivant pour
  economiser la specification des options a 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  a  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heeqquuee pprriinncciippaallee

  Pour compiler un programme avec vos anciennes bibliotheques quand vous
  avez installe glibc comme bibliotheque principale, vous devez mettre a
  zero les chemins d'en-tetes vers les anciennes en-tetes. En specifiant
  "-nostdinc",     vous     annulerez    les    chemins    normaux    et
  "-I/usr/i486-linuxlibc5/include" pointera vers les  en-tetes  libc  5.
  Vous        devez        aussi        indiquer        "-I/usr/lib/gcc-
  lib/i486-linuxlibc5/2.7.2.2/include"   pour   inclure   les   en-tetes
  specifiques  a  gcc.  Rappelez-vous  d'ajuster  ces  chemins  selon la
  maniere dont vous avez nomme les nouveaux repertoires et  selon  votre
  version de gcc.

  Pour  lier un programme a votre ancienne libc, vous devez specifier 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, definissez 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
  generes  par  celui-ci  devraient  contenir  les  variables $CFLAGS et
  $LDFLAGS corrects. Tous les  scripts  configure  ne  verront  pas  les
  variables,  et  vous devriez donc verifier apres avoir lance configure
  et editer les makefiles si necessaire.

  Si les programmes que vous compilez n'appellent que gcc (et pas cpp ou
  binutils  directement),  vous  pouvez  utiliser le script suivant pour
  eviter de devoir indiquer toutes les options a 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 a  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 bibliotheque mathematique, elle est
  donc liee a libm. Puisque votre bibliotheque libg++ existante aura ete
  compilee  avec  votre  ancienne  bibliotheque,  vous devrez recompiler
  libg++ avec glibc ou obtenir une copie binaire. Les dernieres  sources
  de  libg++,  en  meme  temps  qu'un  binaire lie a glibc (pour x86) se
  trouvent a  <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  installe  glibc comme bibliotheque de test, vous devez
  installer les fichiers  dans  le  repertoire  dans  lequel  vous  avez
  installe   glibc   (comme  /usr/i486-linuxglibc2  pour  l'exemple  des
  sections precedentes). Si vous installez a partir du paquetage binaire
  (ce  que  je  recommanderais, puisque je n'ai jamais eu de chance pour
  compiler libg++ de cette maniere), vous devez  extraire  les  fichiers
  dans  un  repertoire temporaire et deplacer tous les fichiers usr/lib/
  dans   le   repertoire   <repertoire   install>/lib/,   les   fichiers
  usr/include/   dans   le   repertoire   <repertoire  install>/include/
  (rappelez-vous d'effacer le lien include/g++ avant !), et les fichiers
  usr/bin/ dans le repertoire <repertoire 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 installe glibc comme bibliotheque principale, vous  devez
  d'abord  deplacer vos anciens fichiers libg++ dans l'ancien repertoire
  libc si vous voulez encore pouvoir compiler des  programmes  g++  avec
  votre  ancienne  libc. La meilleure facon de proceder est probablement
  d'installer une nouvelle copie de libg++ compilee avec  libc  5  comme
  dans  la  section  precedente, 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 repertoire d'en-tetes 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 general
  en ajoutant a 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buuggss

  Si vous pensez que la bibliotheque est verolee, veuillez d'abord  lire
  la  FAQ.  Il  se  peut  que d'autres personnes aient eu ce probleme et
  qu'il y ait une solution simple. Vous devriez aussi regarder la partie
  "Outils  recommandes  pour l'installation de la bibliotheque C de GNU"
  dans le fichier INSTALL puisque certains bugs proviennent  des  outils
  et non de glibc.

  Une  fois que vous avez trouve un bug, assurez-vous que c'est vraiment
  un bug.  Une  bonne  maniere  de  le  faire  est  de  regarder  si  la
  bibliotheque  C  GNU  se  comporte  de  la  meme  maniere qu'une autre
  bibliotheque C. S'il en est  ainsi,  vous  vous  etes  trompe  et  les
  bibliotheques  ont raison (mais pas forcement). Dans le cas contraire,
  l'une des bibliotheques a probablement tort.

  Ensuite,   dirigez-vous   vers     <http://www-gnats.gnu.org:8080/cgi-
  bin/wwwgnats.pl>,  et  parcourez la base de donnees des bugs. Verifiez
  bien que le probleme n'a pas deja  ete  indique.  Vous  devriez  aussi
  jeter  un  coup  d'oeil  au  fichier  BUGS  (ditribue avec glibc) pour
  prendre connaissance des bugs connus.

  Une fois que vous etes sur  d'avoir  trouve  un  bug,  essayez  de  le
  reduire au plus petit test pratique qui reproduit le probleme. Dans le
  cas d'une bibliotheque C, vous ne devrez probablement en  etre  reduit
  qu'a  un  appel  de  fonction de la bibliotheque, si possible. Ceci ne
  devrait pas etre trop difficile.

  L'etape 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 resultats que vous avez  obtenus,  ce  que  vous  pensez  etre  le
  probleme  (si  vous  avez  pense  a  quelque  chose), le type de votre
  systeme, les versions de la bibliotheque C GNU, du compilateur GNU  CC
  et  des  GNU  binutils  que  vous utilisez. Ajoutez aussi les fichiers
  config.status et config.mak crees en lancant configure  ;  ils  seront
  dans  le  repertoire  qui  etait le repertoire courant quand vous avez
  lance configure.

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

  Les suggestions et les questions doivent etre envoyees a la  liste  de
  distribution  a  <bugs-glibc@prep.ai.mit.edu>. Si vous ne lisez pas le
  groupe de gnews gnu.bug.glibc, vous pouvez vous abonner a la liste  en
  demandant a  <bug-glibc-request@prep.ai.mit.edu>.

  Veuillez  s'il  vous plait ne pas envoyer de rapport de bug concernant
  la  bibliotheque  C  GNU  a  <bug-gcc@prep.ai.mit.edu>.  Cette   liste
  s'occupe  des  rapports  de bug de GNU CC. GNU CC et la bibliotheque C
  GNU  sont  des  entites  distinctes  maintenues  par   des   personnes
  differentes.

  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     repertoire     /usr/lib/gcc-lib/<nouveau
  repertoire>/<version gcc>. Si  vous  utilisez  un  systeme  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leem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

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

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

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

  +o  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

  +o  comp.os.linux.development.system

  +o  comp.os.linux.development.apps

  +o  linux.dev.kernel

  +o  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 destinee a la discussion entre les  utilisateurs
        Linux  qui  ont installe glibc2, la nouvelle bibliotheque C. Les
        sujets peuvent comprendre des problemes de compatibilite et  des
        questions  sur  la  compilation  de  code  dans un environnement
        Linux/glibc.   Pour   s'abonner,   envoyer   un    courrier    a
        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  vole 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  alimente
  une partie de la section sur l'indication des bugs.

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

  +o  Allex <allex@ms2.accmail.com.tw>

  +o  Mark Brown <M.A.Brown-4@sms.ed.ac.uk>

  +o  Ulrich Drepper <drepper@gnu.ai.mit.edu>

  +o  Scott K. Ellis <ellis@valueweb.net>

  +o  Aron Griffis <agriffis@coat.com>

  +o  Andreas Jaeger <aj@arthur.rhein-neckar.de>

  +o  Frodo Looijaard <frodol@dds.nl>

  +o  Ryan McGuire <rmcguire@freenet.columbus.oh.us>

  +o  Shaya Potter <spotter@capaccess.org>

  +o  Les Schaffer <godzilla@futuris.net>

  +o  Andy Sewell <puck@pookhill.demon.co.uk>

  +o  Gary Shea <shea@gtsdesign.com>

  +o  Stephane <sr@adb.fr>

  +o  Jan Vandenbos <jan@imaxx.net>

  Les traductions de ce document sont faites par :

  +o  chinois : Allex <allex@ms2.accmail.com.tw>

  +o  francais : Olivier Tharan <tharan@int-evry.fr>

  +o  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'ecrire 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 a voir avec le projet  glibc.  Je  suis  loin  d'etre  un
  expert  dans  ce  domaine, bien que j'essaie de resoudre les problemes
  qu'on m'envoie par  courrier  electronique.  J'apprecie  tout  retour,
  correction  ou  suggestion  que  vous  pourriez me faire. Veuillez les
  envoyer a thrytis@imaxx.net <mailto:thrytis@imaxx.net>.

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

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

