HOWTO Glibc 2
 Eric Green, [email protected]
 v1.5, 8 f�vrier 1998

 de la version fran�aise par  G�raud Canet, [email protected])
 Le HOWTO Glibc 2 couvre l'installation et l'utilisation de la bib�
 lioth�que C GNU version 2 (libc 6) sur les syst�mes Linux.
 ______________________________________________________________________

 Table des mati�res
























































 1. Introduction

    1.1 Note du traducteur
    1.2 � propos de glibc 2
    1.3 � propos de ce document
    1.4 Changements r�cents dans ce document

 2. Choix de la m�thode d'installation

 3. Obtenir la biblioth�que

 4. Installation comme biblioth�que de test

    4.1 Compilation et installation
       4.1.1 �l�ments 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-t�te
    4.5 Test de l'installation

 5. Installation comme biblioth�que C principale

    5.1 Construction de la biblioth�que � partir des sources
       5.1.1 �l�ments requis
       5.1.2 Extraction des sources
       5.1.3 Configuration
       5.1.4 Compilation
    5.2 Pr�paration � 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 biblioth�que 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 suppl�mentaires
       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


 ______________________________________________________________________


 11..  IInnttrroodduuccttiioonn



 11..11..  NNoottee dduu ttrraadduucctteeuurr


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

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


 11..22..  �� pprrooppooss ddee gglliibbcc 22


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

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

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


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

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

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

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


 11..33..  �� pprrooppooss ddee ccee ddooccuummeenntt


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

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


 11..44..  CChhaannggeemmeennttss rr��cceennttss ddaannss ccee ddooccuummeenntt


 Diff�rences entre la version 1.5 et 1.4 :


 �  Indexage ajout� par Ed Bailey.

 �  Changement de mon adresse �lectronique.

 Diff�rences entre la version 1.4 et 1.3 :


 �  Chang� l'�tat courant d'exp�rimental � production.

 �  Mis � jour la liste des portages en d�veloppement.

 �  Mis � jour la derni�re version en 2.0.6.


 22..  CChhooiixx ddee llaa mm��tthhooddee dd''iinnssttaallllaattiioonn


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

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

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

 Si vous utilisez en  ce moment un syst�me Debian  1.3 et ne voulez pas
 le mettre �   jour en installant la   version instable de Debian  pour
 utiliser             glibc,                    le
 HOWTO libc5 vers libc6 Debian
 <http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html> d�crit la
 mani�re d'utiliser les paquetages Debian pour mettre votre syst�me �
 jour.

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



 33..  OObbtteenniirr llaa bbiibblliiootthh��qquuee


 La glibc 2 contient le paquetage glibc et trois paquetages
 suppl�mentaires 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 pr�s 150 Mo d'espace disque pour la compilation
 compl�te et l'installation. L'installation binaire de base du
 paquetage de la biblioth�que prend aux alentours de 50 Mo.

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


 �  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 biblioth�que C principale de la nouvelle distribution Red Hat
 5.0.

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



 44..  IInnssttaallllaattiioonn ccoommmmee bbiibblliiootthh��qquuee ddee tteesstt


 Cette section couvre l'installation de glibc 2 comme biblioth�que de
 test. Tout ce que vous compilerez sera li� � vos biblioth�ques
 existantes sauf si vous donnez des param�tres suppl�mentaires pour les
 lier aux nouvelles biblioth�ques. Il semble que les chemins d'acc�s
 soient compil�s dans un certain nombre de fichiers, et vous devrez
 probablement installer la biblioth�que � partir des sources.


 44..11..  CCoommppiillaattiioonn eett iinnssttaallllaattiioonn



 44..11..11..  ��ll��mmeennttss rreeqquuiiss



 �  � 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 biblioth�ques compl�tes avec les extensions. Sur un
 i686 � 200 MHz charg�, il faut environ une demi-heure.


 44..11..22..  EExxttrraaccttiioonn ddeess ssoouurrcceess


 Vous devez extraire les sources des archives pour pouvoir les
 compiler. La meilleure fa�on de proc�der est de faire ainsi :




  tar xzf glibc-2.0.6.tar.gz
  cd glibc-2.0.6
  tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
  tar xzf ../glibc-crypt-2.0.6.tar.gz
  tar xzf ../glibc-localedata-2.0.6.tar.gz





 Ceci mettra les r�pertoires linuxthreads, crypt et localedate dans le
 r�pertoire glibc-2.0.6 o� configure pourra trouver ces extensions.


 44..11..33..  CCoonnffiigguurraattiioonn


 Dans le r�pertoire glibc-2.0.6, cr�ez un r�pertoire appel� compile, et
 d�placez-vous dedans.  Tout  le travail  doit   �tre effectu� dans  ce
 r�pertoire,  ce qui simplifiera le  nettoyage  (les d�veloppeurs ne se
 sont pas tr�s occup�s de rendre 'make clean' parfait pour l'instant).



       mkdir compile
       cd compile





 Lancez ../configure. Pour utiliser les paquetages d'extension, vous
 devez les sp�cifier avec --enable-add-ons, comme --enable-add-
 ons=linuxthreads,crypt,localedata. Vous devez aussi choisir un
 r�pertoire de destination pour l'installation. /usr/i486-linuxglibc2
 est un bon choix. La ligne de commande de configure pour ceci serait :



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






 44..11..44..  CCoommppiillaattiioonn eett iinnssttaallllaattiioonn


 Pour compiler et v�rifier, lancez :



       make
       make check





 Si le 'make check' r�ussit, installez la biblioth�que :





  make install






 44..22..  MMiissee �� jjoouurr dduu cchhaarrggeeuurr ddee lliieennss ddyynnaammiiqquuee



 1. Cr�ez un lien � partir du nouvel ld.so vers /lib/ld-linux.so.2 :


       ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2






 C'est la seule biblioth�que dont l'emplacement est fix� une fois qu'un
 programme est li�, et l'utilisation d'un lien dans /lib facilitera le
 passage � glibc en tant que biblioth�que C principale quand la version
 stable sortira.

 2. �ditez /etc/ld.so.conf. Vous devez ajouter le chemin vers le
    r�pertoire lib dans lequel se trouvent les nouvelles biblioth�ques
    � la fin du fichier, qui sera <pr�fixe>/lib, comme
    /usr/i486-linuxglibc2/lib dans l'exemple ci-dessus. Apr�s avoir
    modifi� /etc/ld.so.conf, lancez



       ldconfig -v






 44..33..  CCoonnffiigguurraattiioonn ppoouurr ggcccc


 La derni�re �tape de l'installation est la mise � jour de
 /usr/lib/gcc-lib pour que gcc sache comment utiliser les nouvelles
 biblioth�ques. D'abord vous devez dupliquer la configuration
 existante. Pour savoir quelle est la configuration en cours, utilisez
 l'option -v de gcc :



       % gcc -v
       Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
       gcc version 2.7.2.2





 Dans ce cas, i486-unknown-linux est le syst�me, et 2.7.2.2 est la
 version. Vous devez copier /usr/lib/gcc-lib/<syst�me> vers le nouveau
 r�pertoire syst�me de test :



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





 Allez dans le nouveau r�pertoire syst�me de test et dans le r�pertoire
 version



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





 et �ditez le fichier specs se trouvant dans ce r�pertoire. Dans ce
 fichier, changez /lib/ld-linux.so.1 en /lib/ld-linux.so.2. Vous devrez
 aussi enlever toutes les expressions %{...:-lgmon} du fichier, puisque
 glibc n'utilise pas la biblioth�que gmon pour les optimisations. Vous
 trouverez un fichier specs d'exemple dans la section ``Fichiers specs
 d'exemple''.


 44..44..  MMiissee �� jjoouurr ddeess lliieennss ddeess ffiicchhiieerrss dd''eenn--tt��ttee


 Vous devez cr�er des liens dans votre nouveau r�pertoire d'en-t�tes
 vers d'autres r�pertoires d'en-t�tes :



       cd /usr/i486-linuxglibc2/include
       ln -s /usr/src/linux/include/linux
       ln -s /usr/src/linux/include/asm
       ln -s /usr/X11R6/include/X11





 Vous avez peut-�tre d'autres biblioth�ques comme ncurses qui
 n�cessitent d'avoir leurs fichiers d'en-t�tes dans ce r�pertoire. Vous
 devriez copier ou faire un lien vers ces fichiers depuis /usr/include.
 (Certaines biblioth�ques auront besoin d'�tre recompil�es avec glibc2
 pour pouvoir fonctionner avec glibc2. Dans ces cas, compilez
 simplement et installez les paquetages dans /usr/i486-linuxglibc2.)


 44..55..  TTeesstt ddee ll''iinnssttaallllaattiioonn


 Pour tester l'installation, cr�ez le programme suivant dans un fichier
 appel� glibc.c :










  #include <stdio.h>

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





 et compilez-le avec les options "-b <r�pertoire d'installation>
 -nostdinc -I<r�pertoire d'installation>/include -I/usr/lib/gcc-
 lib/<nouveau syst�me>/<version de gcc>/include" :



       % gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc





 Utilisez ldd pour v�rifier que le programme a �t� li� avec glibc2, et
 non avec votre ancienne libc :



       % ldd glibc
       libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.6.so (0x4000d000)
       /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)





 S'il compile, que les liens sont effectu�s et qu'il g�n�re "hello
 world!" quand vous le lancez, l'installation a fonctionn�.



 55..  IInnssttaallllaattiioonn ccoommmmee bbiibblliiootthh��qquuee CC pprriinncciippaallee


 Cette section couvre l'installation de glibc2 comme biblioth�que C
 principale. Tous les nouveaux programmes que vous compilerez seront
 li�s avec cette biblioth�que, sauf si vous utilisez des options de
 compilation sp�ciales pour le lier avec une autre version.

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



 55..11..  CCoonnssttrruuccttiioonn ddee llaa bbiibblliiootthh��qquuee �� ppaarrttiirr ddeess ssoouurrcceess


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




 55..11..11..  ��ll��mmeennttss rreeqquuiiss



 �  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 biblioth�ques avec les extensions. Sur un
 i686 � 200 MHz charg�, il faut environ une demi-heure.



 55..11..22..  EExxttrraaccttiioonn ddeess ssoouurrcceess


 Vous devez extraire les sources des archives pour compiler. La
 meilleure fa�on de le faire est ainsi :



       tar xzf glibc-2.0.6.tar.gz
       cd glibc-2.0.6
       tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
       tar xzf ../glibc-crypt-2.0.6.tar.gz
       tar xzf ../glibc-localedata-2.0.6.tar.gz





 Ceci mettra les r�pertoires linuxthreads, crypt et localedata dans le
 r�pertoire glibc-2.0.6 o� configure pourra trouver ces extensions.


 55..11..33..  CCoonnffiigguurraattiioonn


 Dans   le r�pertoire glibc-2.0.6,  cr�ez  un r�pertoire nomm� compile,
 et  allez   dedans.  Tout  le  travail   sera fait   dans  ce
 r�pertoire, ce qui simplifiera le   nettoyage (les d�veloppeurs ne  se
 sont pas vraiment souci� du 'make clean' pour l'instant).



      mkdir compile
      cd compile




 Lancez ../configure. Pour utiliser les paquetages suppl�mentaires,
 vous devez les sp�cifier avec --enable-add-ons, comme --enable-add-
 ons=linuxthreads,crypt,localedata. Vous devrez aussi s�rement
 sp�cifier les chemins o� elle sera install�e. Pour coller aux
 distributions Linux normales, sp�cifiez --prefix=/usr. (Quand on
 sp�cifie le pr�fixe /usr sur un syst�me Linux, configure sait ajuster
 les autres chemins pour placer libc.so et d'autres biblioth�ques
 importantes dans /lib.) La ligne de commande compl�te de configure
 serait :



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





 55..11..44..  CCoommppiillaattiioonn


 Pour compiler et v�rifier, lancez :



       make
       make check







 55..22..  PPrr��ppaarraattiioonn �� ll''iinnssttaallllaattiioonn


 Vous devez maintenant d�placer certains fichiers pour vous pr�parer �
 l'arriv�e de la nouvelle biblioth�que, que vous l'installiez � partir
 des sources ou de binaires. Tous les nouveaux programmes compil�s
 seront li�s � glibc, mais les vieux programmes qui ne sont pas li�s en
 statique d�pendront encore de libc 5, et vous ne pouvez donc pas
 �craser l'ancienne version.


 1. Cr�ez un nouveau r�pertoire pour y mettre les anciens fichiers :


       mkdir -p /usr/i486-linuxlibc5/lib






 2. Les vieux fichiers d'en-t�te doivent �tre �vacu�s de /usr/include :


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






 3. Cr�ez un nouveau r�pertoire d'en-t�tes et activez les liens vers
    d'autres en-t�tes :


  mkdir /usr/include

  ln -s /usr/src/linux/include/linux /usr/include/linux
  ln -s /usr/src/linux/include/asm /usr/include/asm
  ln -s /usr/X11R6/include/X11 /usr/include/X11
  ln -s /usr/lib/g++-include /usr/include/g++






 Les liens devront �tre ajust�s au besoin selon votre distribution.
 Rien que la Slackware installe les en-t�tes g++ dans
 /usr/local/g++-include, alors que Debian met les en-t�tes dans
 /usr/include/g++, et fait un lien de /usr/lib/g++-include vers
 /usr/include/g++. Dans d'autres cas, vous voudrez s�rement d�placer le
 r�pertoire d'en-t�tes g++ d'origine � son ancien emplacement
 /usr/include.

 4. Remettre des fichiers d'en-t�tes et des liens suppl�mentaires.
    Certaines biblioth�ques non standards comme ncurses installent des
    fichiers dans /usr/include ou installent un lien vers leur
    r�pertoire d'en-t�te dans /usr/include. Ces fichiers et liens
    doivent �tre remis en place pour pouvoir utiliser les biblioth�ques
    suppl�mentaires correctement.

 5. Ajoutez le nouveau r�pertoire de biblioth�que (comme
    /usr/i486-linuxlibc5/lib) _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 install�e.

 6. D�placez ou copiez toutes les anciennes biblioth�ques C dans le
    nouveau r�pertoire.



       mv /usr/lib/libbsd.a /usr/i486-linuxlibc5/lib
       mv /usr/lib/libc.a /usr/i486-linuxlibc5/lib
       mv /usr/lib/libgmon.a /usr/i486-linuxlibc5/lib
       mv /usr/lib/libm.a /usr/i486-linuxlibc5/lib
       mv /usr/lib/libmcheck.a /usr/i486-linuxlibc5/lib
       mv /usr/lib/libc.so /usr/i486-linuxlibc5/lib
       mv /usr/lib/libm.so /usr/i486-linuxlibc5/lib
       cp /lib/libm.so.5.* /usr/i486-linuxlibc5/lib
       cp /lib/libc.so.5.* /usr/i486-linuxlibc5/lib






 libm.so.5 et libc.so.5 doivent �tre copi�es et non d�plac�es si /usr
 est une partition diff�rente de /, parce qu'elles sont n�cessaires aux
 programmes utilis�s pour d�marrer Linux et doivent �tre situ�es sur la
 partition racine.

 7. D�placez les fichiers /usr/lib/*.o dans le nouveau r�pertoire.








  mv /usr/lib/crt1.o /usr/i486-linuxlibc5/lib
  mv /usr/lib/crti.o /usr/i486-linuxlibc5/lib
  mv /usr/lib/crtn.o /usr/i486-linuxlibc5/lib
  mv /usr/lib/gcrt1.o /usr/i486-linuxlibc5/lib






 8. Mettez � jour votre cache de biblioth�que apr�s avoir d�plac� vos
    biblioth�ques.



       ldconfig -v






 55..33..  IInnssttaallllaattiioonn �� ppaarrttiirr dduu ppaaqquueettaaggee bbiinnaaiirree


 Si vous installez glibc � partir de binaires pr�compil�s, vous devez :



       cd /
       gzip -dc glibc-2.0.bin.i386.tar.gz | tar tvvf -
       gzip -dc glibc-crypt-2.0.bin.i386.tar.gz | tar tvvf -
       ldconfig -v





 Si vous avez une architecure ou une version diff�rente, substituez les
 noms de fichiers ad�quats.


 55..44..  IInnssttaallllaattiioonn �� ppaarrttiirr ddeess ssoouurrcceess


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



       make install
       ldconfig -v






 55..55..  MMiissee �� jjoouurr ddeess ssppeeccss ggcccc


 L'�tape finale de l'installation (� la fois pour les installations
 binaires et sources) est de mettre � jour le fichier specs de gcc pour
 que vous puissiez lier vos programmes proprement. Pour d�terminer quel
 fichier specs est utilis� par gcc, lancez :


       % gcc -v
       reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
       gcc version 2.7.2.2





 Dans ce cas, i486-unknown-linux est le syst�me, et 2.7.2.2 est la
 version. Vous devez copier /usr/lib/gcc-lib/<syst�me> dans l'ancien
 r�pertoire syst�me :



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





 Allez dans le r�pertoire d'origine et dans le r�pertoire de version



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





 et �ditez le fichier specs que vous y trouverez. Dans ce fichier,
 changez /lib/ld-linux.so.1 en /lib/ld-linux.so.2. Vous devrez aussi
 enlever toutes les expressions %{...:-lgmon} de ce fichier, puisque
 glibc n'utilise pas la biblioth�que gmon pour les optimisations. Un
 fichier specs d'exemple se trouve dans la section ``fichiers specs
 d'exemple''.



 55..66..  TTeesstt ddee ll''iinnssttaallllaattiioonn


 Pour tester l'installation, cr�ez le programme suivant dans un fichier
 appel� glibc.c :



       #include <stdio.h>

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





 et compilez le programme.



       % gcc glibc.c -o glibc


 Utilisez ldd pour v�rifier que le programme a �t� li� avec glibc2, et
 non avec votre ancienne libc :



       % ldd glibc
       libc.so.6 => /lib/libc.so.6 (0x4000e000)
       /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)





 Si �a compile et que �a g�n�re "hello world!" quand vous le lancez,
 l'installation est r�ussie.



 66..  CCoommppiillaattiioonn aavveecc llaa lliibbcc nnoonn pprriinncciippaallee


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



 66..11..  AAvveerrttiisssseemmeenntt ccoonncceerrnnaanntt ll''uuttiilliissaattiioonn ddee lliibbccss nnoonn pprriinncciippaalleess


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


 66..22..  CCoommppiillaattiioonn ddeess pprrooggrraammmmeess aavveecc uunnee gglliibbcc ddee tteesstt


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

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

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


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





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

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



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





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


 66..33..  CCoommppiillaattiioonn ddeess pprrooggrraammmmeess aavveecc lliibbcc 55 qquuaanndd gglliibbcc eesstt llaa bbiibb��
 lliiootthh��qquuee pprriinncciippaallee


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

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

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



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






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

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



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





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



 77..  CCoommppiillaattiioonn ddeess pprrooggrraammmmeess CC++++


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



 77..11..  IInnssttaallllaattiioonn ddee lliibbgg++++ ppoouurr uunnee iinnssttaallllaattiioonn gglliibbcc ddee tteesstt


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


 77..22..  IInnssttaallllaattiioonn ddee lliibbgg++++ ppoouurr uunnee iinnssttaallllaattiioonn gglliibbcc pprriinncciippaallee


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


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



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







 88..  IInnddiiqquueerr lleess bboogguueess


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

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

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

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

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

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


 Les suggestions et les questions doivent �tre envoy�es � la liste de
 distribution �  <[email protected]>. Si vous ne lisez pas le
 groupe de gnews gnu.bug.glibc, vous pouvez vous abonner � la liste en
 demandant �  <[email protected]>.

 Veuillez s'il vous plait ne pas envoyer de rapport de bug concernant
 la biblioth�que C GNU � <[email protected]>. Cette liste
 s'occupe des rapports de bug de GNU CC. GNU CC et la biblioth�que C
 GNU sont des entit�s distinctes maintenues par des personnes
 diff�rentes.



 99..  FFiicchhiieerrss ssppeeccss dd''eexxeemmppllee


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













































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

  *asm_final:
  %{pipe:-}

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

  *cc1:
  %{profile:-p}

  *cc1plus:


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

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

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

  *libgcc:
  -lgcc

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

  *switches_need_spaces:


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

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

  *cross_compile:
  0

  *multilib:
  . ;






 1100..  DDiivveerrss



 1100..11..  IInnffoorrmmaattiioonnss ssuuppppll��mmeennttaaiirreess



 1100..11..11..  PPaaggeess WWeebb



 �  Page d'accueil de la biblioth�que 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>


 1100..11..22..  GGrroouuppeess ddee nneewwss



 �  comp.os.linux.development.system

 �  comp.os.linux.development.apps

 �  linux.dev.kernel

 �  gnu.bugs.glibc


 1100..11..33..  LLiisstteess ddee ddiissttrriibbuuttiioonn



    LLiissttee ddee ddiissccuussssiioonn GGlliibbcc 22 LLiinnuuxx..
       Cette liste est destin�e � la discussion entre les utilisateurs
       Linux qui ont install� glibc2, la nouvelle biblioth�que C. Les
       sujets peuvent comprendre des probl�mes de compatibilit� et des
       questions sur la compilation de code dans un environnement
       Linux/glibc. Pour s'abonner, envoyer un courrier �
       [email protected]
       <mailto:[email protected]> avec dans le corps
       "subscribe glibc-linux <votre adresse email>".


 1100..22..  RReemmeerrcciieemmeennttss


 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 <[email protected]> et ses
 commentaires. Andreas Jaeger <[email protected]> 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 <[email protected]>

 �  Mark Brown <[email protected]>

 �  Ulrich Drepper <[email protected]>

 �  Scott K. Ellis <[email protected]>

 �  Aron Griffis <[email protected]>

 �  Andreas Jaeger <[email protected]>

 �  Frodo Looijaard <[email protected]>

 �  Ryan McGuire <[email protected]>

 �  Shaya Potter <[email protected]>

 �  Les Schaffer <[email protected]>

 �  Andy Sewell <[email protected]>

 �  Gary Shea <[email protected]>

 �  Stephane <[email protected]>

 �  Jan Vandenbos <[email protected]>

 Les traductions de ce document sont faites par :


 �  chinois : Allex <[email protected]>

 �  fran�ais : G�raud Canet<[email protected]>

 �  japonais : Kazuyuki Okamoto <[email protected]>


 1100..33..  RReettoouurr dd''iinnffoorrmmaattiioonnss


 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 r�soudre les probl�mes
 qu'on m'envoie par courrier �lectronique. J'appr�cie tout retour,
 correction ou suggestion que vous pourriez me faire. Veuillez les
 envoyer � [email protected] <mailto:[email protected]>.


 1100..44..  CCooppyyrriigghhtt


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