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.