\documentclass{article}
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage[latin1]{inputenc}
\usepackage{epsfig}
\usepackage{null}
\title{HOWTO Glibc 2}
\author{Eric Green, {\ttfamily thrytis@imaxx.net}, traduit par Olivier
Tharan, {\ttfamily tharan@int-evry.fr}}
\date{v1.4, 11 janvier 1997}
\abstract{Le HOWTO Glibc 2 couvre l'installation et l'utilisation de la
biblioth\`{e}que C GNU version 2 (libc 6) sur les syst\`{e}mes Linux.}


\begin{document}
\maketitle
\tableofcontents

\section{Introduction}






\subsection{Note du traducteur}



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




\subsection{\`{A} propos de glibc 2}



Glibc 2 est la toute derni\`{e}re version de la biblioth\`{e}que C du
GNU. Elle fonctionne pour l'instant sans modifications sur les
syst\`{e}mes GNU Hurd, et les syst\`{e}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. \`{A} l'avenir, d'autres architectures et
syst\`{e}mes d'exploitation seront support\'{e}s.

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

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

\begin{description}
\item[Crypt] \mbox{}

Le paquetage UFC-crypt pour le cryptage des donn\'{e}es. Il est
disponible s\'{e}par\'{e}ment \`{a} cause de restrictions \`{a} l'exportation.

\item[LinuxThreads] \mbox{}

Une mise en oeuvre de l'interface Posix 1003.1c {\tt "}pthread{\tt "}.

\item[Locale data] \mbox{}

Contient les donn\'{e}es n\'{e}cessaires \`{a} la construction
des fichiers de donn\'{e}es locale pour utiliser les possibilit\'{e}s
d'internationalisation de la glibc.

\end{description}


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




\subsection{\`{A} propos de ce document}



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

La copie la plus r\'{e}cente de ce HOWTO fait partie du \url{http://sunsite.unc.edu/LDP}{Linux Documentation Project},
ou bien vous en trouverez une version \`{a} \url{http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html}{}.




\subsection{Changements r\'{e}cents dans ce document}



Diff\'{e}rences entre la version 1.4 et 1.3 :

\begin{itemize}
\item Chang\'{e} l'\'{e}tat courant d'exp\'{e}rimental \`{a} production.
\item Mis \`{a} jour la liste des portages en d\'{e}veloppement.
\item Mis \`{a} jour la derni\`{e}re version en 2.0.6.
\end{itemize}


Diff\'{e}rences entre la version 1.3 et 1.2 :

\begin{itemize}
\item Ajout\'{e} une note sur les extensions recommand\'{e}es.
\item Ajout\'{e} des informations sur la liste de distribution
glibc-linux.
\item Mis \`{a} jour les informations sur la distribution Redhat bas\'{e}e sur
la glibc.
\item Mis \`{a} jour l'emplacement des paquetages glibc Debian.
\item Ajout\'{e} la n\'{e}cessit\'{e} de texinfo et sa version.
\end{itemize}





\section{Choix de la m\'{e}thode d'installation}



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

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

Frodo Looijaard d\'{e}crit encore une autre mani\`{e}re d'installer glibc. Sa
m\'{e}thode implique l'installation de glibc comme biblioth\`{e}que secondaire
et la mise en place d'un compilateur crois\'{e} (cross-compilateur) pour
compiler en utilisant glibc. La proc\'{e}dure d'installation pour cette
m\'{e}thode est plus compliqu\'{e}e que l'installation en tant que
biblioth\`{e}que de test d\'{e}crite dans ce document, mais permet une
compilation facilit\'{e}e en \'{e}ditant les liens avec glibc. Cette m\'{e}thode
est d\'{e}crite dans son document \url{http://huizen.dds.nl/~frodol/glibc/}{Installer glibc-2 sur Linux}.

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

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






\section{Obtenir la biblioth\`{e}que\label{getting}}



La glibc 2 contient le paquetage glibc et trois paquetages
suppl\'{e}mentaires optionnels, LinuxThreads, Locale et Crypt. Vous pouvez
trouver les sources \`{a} 

\begin{itemize}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz}{}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz}{}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz}{}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz}{}
\end{itemize}


Il vous faudra \`{a} peu pr\`{e}s 150 Mo d'espace disque pour la compilation
compl\`{e}te et l'installation. L'installation binaire de base du
paquetage de la biblioth\`{e}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 \`{a}

\begin{itemize}
\item Intel x86:
\begin{itemize}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz}{}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.gz}{}
\end{itemize}
\item Alpha:
\begin{itemize}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux.tar.gz}{}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-linux.tar.gz}{}
\end{itemize}
\item m68k:
\begin{itemize}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.gz}{}
\item \url{ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linux.bin.tar.gz}{}
\end{itemize}
\end{itemize}


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

Si vous utilisez une distribution Red Hat, vous pouvez obtenir les
RPMs pour la glibc 2 \`{a} \url{ftp://ftp.redhat.com/pub/redhat/}{}. La glibc 2 est la
biblioth\`{e}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 \`{a} \url{ftp://ftp.debian.org/debian/dists/unstable/main/}{}. Les
fichiers sont nomm\'{e}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.






\section{Installation comme biblioth\`{e}que de test\label{test-install}}



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




\subsection{Compilation et installation}






\subsubsection{\'{E}l\'{e}ments requis}



\begin{itemize}
\item \`{A} peu pres 150 Mo d'espace disque libre
\item GNU make 3.75
\item gcc {\(>\)}= 2.7.2 (ou mieux, 2.7.2.1)
\item binutils 2.8.1 (pour les alpha vous devez utiliser une mise \`{a}
jour temporaire ou snapshot)
\item bash 2.0
\item autoconf 2.12 (si vous changez configure.in)
\item texinfo 3.11
\end{itemize}


Sur un i586 \`{a} 133 MHz avec 64 Mo de RAM, il faut environ trois heures
pour compiler les biblioth\`{e}ques compl\`{e}tes avec les extensions. Sur un
i686 \`{a} 200 MHz charg\'{e}, il faut environ une demi-heure.




\subsubsection{Extraction des sources}



Vous devez extraire les sources des archives pour pouvoir les
compiler. La meilleure fa\c{c}on de proc\'{e}der est de faire ainsi :

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


Ceci mettra les r\'{e}pertoires linuxthreads, crypt et localedate dans le
r\'{e}pertoire glibc-2.0.6 o\`{u} configure pourra trouver ces extensions.




\subsubsection{Configuration}



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

\begin{tscreen}
\begin{verbatim}
 mkdir compile
 cd compile
 
\end{verbatim}
\end{tscreen}


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

\begin{tscreen}
\begin{verbatim}
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
 
\end{verbatim}
\end{tscreen}





\subsubsection{Compilation et installation}



Pour compiler et v\'{e}rifier, lancez :

\begin{tscreen}
\begin{verbatim}
 make
 make check
 
\end{verbatim}
\end{tscreen}


Si le 'make check' r\'{e}ussit, installez la biblioth\`{e}que :

\begin{tscreen}
\begin{verbatim}
 make install
 
\end{verbatim}
\end{tscreen}





\subsection{Mise \`{a} jour du chargeur de liens dynamique}



\begin{enumerate}
\item Cr\'{e}ez un lien \`{a} partir du nouvel {\ttfamily ld.so} vers {\ttfamily /lib/ld-linux.so.2} :
\begin{tscreen}
\begin{verbatim}
 ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
 
\end{verbatim}
\end{tscreen}


C'est la seule biblioth\`{e}que dont l'emplacement est fix\'{e} une fois qu'un
programme est li\'{e}, et l'utilisation d'un lien dans {\ttfamily /lib} facilitera le
passage \`{a} glibc en tant que biblioth\`{e}que C principale quand la version
stable sortira.
\item \'{E}ditez {\ttfamily /etc/ld.so.conf}. Vous devez ajouter le chemin vers le
r\'{e}pertoire lib dans lequel se trouvent les nouvelles biblioth\`{e}ques \`{a}
la fin du fichier, qui sera {\ttfamily {\(<\)}pr\'{e}fixe{\(>\)}/lib}, comme
{\ttfamily /usr/i486-linuxglibc2/lib} dans l'exemple ci-dessus. Apr\`{e}s avoir
modifi\'{e} {\ttfamily /etc/ld.so.conf}, lancez

\begin{tscreen}
\begin{verbatim}
 ldconfig -v
 
\end{verbatim}
\end{tscreen}
\end{enumerate}





\subsection{Configuration pour gcc}



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

\begin{tscreen}
\begin{verbatim}
 \% gcc -v
 Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2
 
\end{verbatim}
\end{tscreen}


Dans ce cas, i486-unknown-linux est le syst\`{e}me, et 2.7.2.2 est la
version. Vous devez copier {\ttfamily /usr/lib/gcc-lib/{\(<\)}syst\`{e}me{\(>\)}}
vers le nouveau r\'{e}pertoire syst\`{e}me de test :

\begin{tscreen}
\begin{verbatim}
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxglibc2
 
\end{verbatim}
\end{tscreen}


Allez dans le nouveau r\'{e}pertoire syst\`{e}me de test et dans le r\'{e}pertoire
version

\begin{tscreen}
\begin{verbatim}
 cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
 
\end{verbatim}
\end{tscreen}


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




\subsection{Mise \`{a} jour des liens des fichiers d'en-t\^{e}te}



Vous devez cr\'{e}er des liens dans votre nouveau r\'{e}pertoire d'en-t\^{e}tes
vers d'autres r\'{e}pertoires d'en-t\^{e}tes :

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


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




\subsection{Test de l'installation}



Pour tester l'installation, cr\'{e}ez le programme suivant dans un fichier
appel\'{e} glibc.c :

\begin{tscreen}
\begin{verbatim}
 \#include {\(<\)}stdio.h{\(>\)}

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


et compilez-le avec les options {\tt "}-b {\(<\)}r\'{e}pertoire d'installation{\(>\)} -nostdinc -I{\(<\)}r\'{e}pertoire d'installation{\(>\)}/include -I/usr/lib/gcc-lib/{\(<\)}nouveau syst\`{e}me{\(>\)}/{\(<\)}version de gcc{\(>\)}/include{\tt "} :

\begin{tscreen}
\begin{verbatim}
 \% 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
 
\end{verbatim}
\end{tscreen}


Utilisez ldd pour v\'{e}rifier que le programme a \'{e}t\'{e} li\'{e} avec glibc2, et
non avec votre ancienne libc :

\begin{tscreen}
\begin{verbatim}
 \% 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)
 
\end{verbatim}
\end{tscreen}


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






\section{Installation comme biblioth\`{e}que C principale\label{primary-install}}



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

Si vous utilisez Redhat ou Debian et avez charg\'{e} les fichier rpm ou
deb ad\'{e}quats, voyez les instructions d'installation Redhat ou
Debian. Vous pourrez alors sauter cette section.






\subsection{Construction de la biblioth\`{e}que \`{a} partir des sources\label{compiling}}



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




\subsubsection{\'{E}l\'{e}ments requis}



\begin{itemize}
\item Environ 150 Mo d'espace disque libre
\item GNU make 3.75
\item gcc {\(>\)}= 2.7.2 (ou mieux, 2.7.2.1)
\item binutils 2.8.1 (pour les alpha vous aurez besoin d'une version 'snapshot')
\item bash 2.0
\item autoconf 2.12 (si vous changez configure.in)
\item texinfo 3.11
\end{itemize}


Sur un i586 \`{a} 133 MHz avec 64 Mo de RAM, il faut environ trois heures
pour compiler toutes les biblioth\`{e}ques avec les extensions. Sur un
i686 \`{a} 200 MHz charg\'{e}, il faut environ une demi-heure.






\subsubsection{Extraction des sources}



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

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


Ceci mettra les r\'{e}pertoires linuxthreads, crypt et localedata dans le
r\'{e}pertoire glibc-2.0.6 o\`{u} configure pourra trouver ces extensions.




\subsubsection{Configuration}



Dans le r\'{e}pertoire {\ttfamily glibc-2.0.6}, cr\'{e}ez un r\'{e}pertoire nomm\'{e}
compile, et allez dedans. Tout le travail sera fait dans ce
r\'{e}pertoire, ce qui simplifiera le nettoyage. (Les d\'{e}veloppeurs n'ont
pas vraiment pens\'{e} \`{a} parfaire le 'make clean' pour l'instant.)

\begin{tscreen}
\begin{verbatim}
mkdir compile
cd compile
\end{verbatim}
\end{tscreen}


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

\begin{tscreen}
\begin{verbatim}
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr
\end{verbatim}
\end{tscreen}





\subsubsection{Compilation}



Pour compiler et v\'{e}rifier, lancez :

\begin{tscreen}
\begin{verbatim}
 make
 make check
 
\end{verbatim}
\end{tscreen}







\subsection{Pr\'{e}paration \`{a} l'installation}



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

\begin{enumerate}
\item Cr\'{e}ez un nouveau r\'{e}pertoire pour y mettre les anciens fichiers :
\begin{tscreen}
\begin{verbatim}
 mkdir -p /usr/i486-linuxlibc5/lib
 
\end{verbatim}
\end{tscreen}

\item Les vieux fichiers d'en-t\^{e}te doivent \^{e}tre \'{e}vacu\'{e}s de
{\ttfamily /usr/include} :
\begin{tscreen}
\begin{verbatim}
 mv /usr/include /usr/i486-linuxlibc5/include
 
\end{verbatim}
\end{tscreen}

\item Cr\'{e}ez un nouveau r\'{e}pertoire d'en-t\^{e}tes et activez les liens vers
d'autres en-t\^{e}tes :
\begin{tscreen}
\begin{verbatim}
 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++
 
\end{verbatim}
\end{tscreen}


Les liens devront \^{e}tre ajust\'{e}s au besoin selon votre
distribution. Rien que la Slackware installe les en-t\^{e}tes g++ dans
{\ttfamily /usr/local/g++-include}, alors que Debian met les en-t\^{e}tes
dans {\ttfamily /usr/include/g++}, et fait un lien de
{\ttfamily /usr/lib/g++-include} vers {\ttfamily /usr/include/g++}. Dans
d'autres cas, vous voudrez s\^{u}rement d\'{e}placer le r\'{e}pertoire d'en-t\^{e}tes
g++ d'origine \`{a} son ancien emplacement {\ttfamily /usr/include}.
\item Remettre des fichiers d'en-t\^{e}tes et des liens
suppl\'{e}mentaires. Certaines biblioth\`{e}ques non standards comme ncurses
installent des fichiers dans {\ttfamily /usr/include} ou installent un
lien vers leur r\'{e}pertoire d'en-t\^{e}te dans {\ttfamily /usr/include}. Ces
fichiers et liens doivent \^{e}tre remis en place pour pouvoir utiliser
les biblioth\`{e}ques suppl\'{e}mentaires correctement.
\item Ajoutez le nouveau r\'{e}pertoire de biblioth\`{e}que (comme
{\ttfamily /usr/i486-linuxlibc5/lib}) {\itshape en haut\/} de votre fichier
{\ttfamily /etc/ld.so.conf}. Vous devriez avoir ld.so-1.8.8 ou mieux
install\'{e} pour \'{e}viter d'avoir des messages bizarres une fois que glibc
sera install\'{e}e.
\item D\'{e}placez ou copiez toutes les anciennes biblioth\`{e}ques C dans le
nouveau r\'{e}pertoire.

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


{\ttfamily libm.so.5} et {\ttfamily libc.so.5} doivent \^{e}tre copi\'{e}es et non
d\'{e}plac\'{e}es si {\ttfamily /usr} est une partition diff\'{e}rente de {\ttfamily /},
parce qu'elles sont n\'{e}cessaires aux programmes utilis\'{e}s pour d\'{e}marrer
Linux et doivent \^{e}tre situ\'{e}es sur la partition racine.
\item D\'{e}placez les fichiers {\ttfamily /usr/lib/*.o} dans le nouveau
r\'{e}pertoire.

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}

\item Mettez \`{a} jour votre cache de biblioth\`{e}que apr\`{e}s avoir d\'{e}plac\'{e}
vos biblioth\`{e}ques.

\begin{tscreen}
\begin{verbatim}
 ldconfig -v
 
\end{verbatim}
\end{tscreen}
\end{enumerate}





\subsection{Installation \`{a} partir du paquetage binaire}



Si vous installez glibc \`{a} partir de binaires pr\'{e}compil\'{e}s, vous devez :

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


Si vous avez une architecure ou une version diff\'{e}rentes, substituez
les noms de fichiers ad\'{e}quats.




\subsection{Installation \`{a} partir des sources}



Pour installer la biblioth\`{e}que \`{a} partir des sources, lancez :

\begin{tscreen}
\begin{verbatim}
 make install
 ldconfig -v
 
\end{verbatim}
\end{tscreen}





\subsection{Mise \`{a} jour des specs gcc}



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

\begin{tscreen}
\begin{verbatim}
 \% gcc -v
 reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2
 
\end{verbatim}
\end{tscreen}


Dans ce cas, i486-unknown-linux est le syst\`{e}me, et 2.7.2.2 est la
version. Vous devez copier {\ttfamily /usr/lib/gcc-lib/{\(<\)}syst\`{e}me{\(>\)}}
dans l'ancien r\'{e}pertoire syst\`{e}me :

\begin{tscreen}
\begin{verbatim}
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxlibc5
 
\end{verbatim}
\end{tscreen}


Allez dans le r\'{e}pertoire d'origine et dans le r\'{e}pertoire de version

\begin{tscreen}
\begin{verbatim}
 cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2
 
\end{verbatim}
\end{tscreen}


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






\subsection{Test de l'installation}



Pour tester l'installation, cr\'{e}ez le programme suivant dans un fichier
appel\'{e} glibc.c :

\begin{tscreen}
\begin{verbatim}
 \#include {\(<\)}stdio.h{\(>\)}

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


et compilez le programme.

\begin{tscreen}
\begin{verbatim}
 \% gcc glibc.c -o glibc
 
\end{verbatim}
\end{tscreen}


Utilisez ldd pour v\'{e}rifier que le programme a \'{e}t\'{e} li\'{e} avec glibc2, et
non avec votre ancienne libc :

\begin{tscreen}
\begin{verbatim}
 \% ldd glibc
 libc.so.6 => /lib/libc.so.6 (0x4000e000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
 
\end{verbatim}
\end{tscreen}


Si \c{c}a compile et que \c{c}a g\'{e}n\`{e}re {\tt "}hello world!{\tt "} quand vous
le lancez, l'installation est r\'{e}ussie.






\section{Compilation avec la libc non principale}



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






\subsection{Avertissement concernant l'utilisation de libcs non principales}



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




\subsection{Compilation des programmes avec une glibc de test}



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

Pour lier un programme \`{a} une glibc de test, vous devez sp\'{e}cifier la
configuration gcc. Vous le faites avec l'option {\tt "}-b
i486-linuxglibc2{\tt "}.

Pour la plupart des programmes, vous pouvez sp\'{e}cifier ces nouvelles
options en les ajoutant aux options de makefile
{\ttfamily \$CFLAGS} et {\ttfamily \$LDFLAGS} :

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


Si vous utilisez un script configure, d\'{e}finissez les variables shell
{\ttfamily \$CFLAGS} et {\ttfamily \$LDFLAGS} (en utilisant
env/setenv pour csh/tcsh ou set/export pour sh/bash/etc) avant de
lancer configure. Les makefiles g\'{e}n\'{e}r\'{e}s par celui-ci devraient
contenir les variables {\ttfamily \$CFLAGS} et
{\ttfamily \$LDFLAGS} correctes. Tous les scripts configure ne
tiendront pas compte des variables, et par cons\'{e}quent vous devriez
v\'{e}rifier apr\`{e}s avoir lanc\'{e} configure et \'{e}diter les makefiles \`{a} la main
si n\'{e}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
\'{e}conomiser la sp\'{e}cification des options \`{a} chaque fois :

\begin{tscreen}
\begin{verbatim}
 \#!/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 "\$@"
 
\end{verbatim}
\end{tscreen}


Vous pourrez alors utiliser ce script \`{a} la place de {\tt "}gcc{\tt "}
pour compiler.




\subsection{Compilation des programmes avec libc 5 quand glibc est la biblioth\`{e}que principale}



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

Pour lier un programme \`{a} votre ancienne libc, vous devez sp\'{e}cifier la
configuration de gcc. Vous le faites en utilisant l'option {\tt "}-b
i486-linuxlibc5{\tt "}.

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

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}


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

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

\begin{tscreen}
\begin{verbatim}
 \#!/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 "\$@"
 
\end{verbatim}
\end{tscreen}


Vous pouvez alors utiliser ce script \`{a} la place de {\tt "}gcc{\tt "}
pour la compilation.






\section{Compilation des programmes C++}



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






\subsection{Installation de libg++ pour une installation glibc de test}



Si vous avez install\'{e} glibc comme biblioth\`{e}que de test, vous devez
installer les fichiers dans le r\'{e}pertoire dans lequel vous avez
install\'{e} glibc (comme {\ttfamily /usr/i486-linuxglibc2} pour l'exemple
des sections pr\'{e}c\'{e}dentes). 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 mani\`{e}re), vous devez extraire les
fichiers dans un r\'{e}pertoire temporaire et d\'{e}placer tous les fichiers
{\ttfamily usr/lib/} dans le r\'{e}pertoire {\ttfamily {\(<\)}r\'{e}pertoire
install{\(>\)}/lib/}, les fichiers {\ttfamily usr/include/} dans le
r\'{e}pertoire {\ttfamily {\(<\)}r\'{e}pertoire install{\(>\)}/include/} (rappelez-vous
d'effacer le lien {\ttfamily include/g++} avant !), et les fichiers
{\ttfamily usr/bin/} dans le r\'{e}pertoire {\ttfamily {\(<\)}r\'{e}pertoire
install{\(>\)}/bin/}.




\subsection{Installation de libg++ pour une installation glibc principale}



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




\subsection{Compilation de programmes C++ avec la libc non principale}



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

\begin{tscreen}
\begin{verbatim}
 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
 
\end{verbatim}
\end{tscreen}







\section{Indiquer les bugs}



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

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

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

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

L'\'{e}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\'{e}sultats que vous avez obtenus, ce que vous pensez \^{e}tre le
probl\`{e}me (si vous avez pens\'{e} \`{a} quelque chose), le type de votre
syst\`{e}me, les versions de la biblioth\`{e}que C GNU, du compilateur GNU CC
et des GNU binutils que vous utilisez. Ajoutez aussi les fichiers
{\ttfamily config.status} et {\ttfamily config.mak} cr\'{e}\'{e}s en lan\c{c}ant
{\ttfamily configure} ; ils seront dans le r\'{e}pertoire qui \'{e}tait le
r\'{e}pertoire courant quand vous avez lanc\'{e} {\ttfamily configure}.

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

Les suggestions et les questions doivent \^{e}tre envoy\'{e}es \`{a} la liste de
distribution \`{a} \url{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} \url{bug-glibc-request@prep.ai.mit.edu}{}.

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






\section{Fichiers specs d'exemple\label{specs}}



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

\begin{tscreen}
\begin{verbatim}
 *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:
 . ;
 
\end{verbatim}
\end{tscreen}





\section{Divers}






\subsection{Informations suppl\'{e}mentaires}






\subsubsection{Pages Web}



\begin{itemize}
\item \url{http://www.gnu.org/software/libc/libc.html}{Page d'accueil de la biblioth\`{e}que C GNU chez FSF}
\item \url{http://www.imaxx.net/~thrytis/glibc/}{Utilisation de GNU Libc 2 avec Linux}
\item \url{http://huizen.dds.nl/~frodol/glibc/}{Installer glibc-2 sur Linux}
\item \url{http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html}{HOWTO libc5 vers libc6 Debian}
\end{itemize}





\subsubsection{Groupes de news}



\begin{itemize}
\item comp.os.linux.development.system
\item comp.os.linux.development.apps
\item linux.dev.kernel
\item gnu.bugs.glibc
\end{itemize}





\subsubsection{Listes de distribution}



\begin{description}
\item[Liste de discussion Glibc 2 Linux.] \mbox{}

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

\end{description}





\subsection{Remerciements}



J'ai vol\'{e} une bonne partie de ces informations sur la \url{http://www.gnu.org/software/libc/libc.html}{page web de GNU Libc} et de l'annonce de glibc 2 par Ulrich Drepper
{\(<\)}drepper@gnu.ai.mit.edu{\(>\)} et ses commentaires. Andreas Jaeger
{\(<\)}aj@arthur.rhein-neckar.de{\(>\)} a aliment\'{e} une partie de la section
sur l'indication des bugs.

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

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


Les traductions de ce document sont faites par :

\begin{itemize}
\item chinois : Allex {\(<\)}allex@ms2.accmail.com.tw{\(>\)}
\item fran\c{c}ais : Olivier Tharan {\(<\)}tharan@int-evry.fr{\(>\)}
\item japonais : Kazuyuki Okamoto {\(<\)}ikko-@pacific.rim.or.jp{\(>\)}
\end{itemize}





\subsection{Retour d'informations}



En plus d'\'{e}crire ce HOWTO, maintenir la page \url{http://www.imaxx.net/~thrytis/glibc}{glibc 2 pour Linux},
et l'utiliser sur ma machine, je n'ai rien \`{a} voir avec le projet
glibc. Je suis loin d'\^{e}tre un expert dans ce domaine, bien que
j'essaie de r\'{e}soudre les probl\`{e}mes qu'on m'envoie par courrier
\'{e}lectronique. J'appr\'{e}cie tout retour, correction ou suggestion que
vous pourriez me faire. Veuillez les envoyer \`{a} \url{mailto:thrytis@imaxx.net}{thrytis@imaxx.net}.




\subsection{Copyright}



Copyright (c) 1997 par Eric Green. Ce document peut \^{e}tre distribu\'{e}
sous les termes de la licence LDP.



\end{document}
