ejg3@cornell.edu
canet@labri.u-bordeaux.fr
) Le
HOWTO Glibc 2 couvre l'installation et l'utilisation de la biblioth�que C GNU
version 2 (libc 6) sur les syst�mes Linux.
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.
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 :
Le paquetage UFC-crypt pour le cryptage des donn�es. Il est disponible s�par�ment � cause de restrictions � l'exportation.
Une mise en oeuvre de l'interface Posix 1003.1c "pthread".
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.)
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, ou bien vous en trouverez une version � http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html.
Diff�rences entre la version 1.5 et 1.4 :
Diff�rences entre la version 1.4 et 1.3 :
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� (cross-compiler) 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 (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 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.
La glibc 2 contient le paquetage glibc et trois paquetages suppl�mentaires optionnels, LinuxThreads, Locale et Crypt. Vous pouvez trouver les sources �
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 �
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.
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.
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.
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.
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
Pour compiler et v�rifier, lancez :
make
make check
Si le 'make check' r�ussit, installez la biblioth�que :
make install
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.
/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
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.
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
.)
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�.
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.
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.
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.
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.
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
Pour compiler et v�rifier, lancez :
make
make check
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.
mkdir -p /usr/i486-linuxlibc5/lib
/usr/include
:
mv /usr/include /usr/i486-linuxlibc5/include
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
.
/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.
/usr/i486-linuxlibc5/lib
) en haut 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.
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.
/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
ldconfig -v
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.
Pour installer la biblioth�que � partir des sources, lancez :
make install
ldconfig -v
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.
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.
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.
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.
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.
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.
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/.
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/
.
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.
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
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 �
bugs@gnu.org (l'ancienne adresse
bugs@gnu.ai.mit.edu 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 � bugs-glibc@prep.ai.mit.edu. Si vous ne lisez pas le groupe de gnews gnu.bug.glibc, vous pouvez vous abonner � la liste en demandant � bug-glibc-request@prep.ai.mit.edu.
Veuillez s'il vous plait ne pas envoyer de rapport de bug concernant la biblioth�que C GNU � <bug-gcc@prep.ai.mit.edu>. 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.
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:
. ;
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 � Majordomo@ricardo.ecn.wfu.edu avec dans le corps "subscribe glibc-linux <votre adresse email>".
J'ai vol� une bonne partie de ces informations sur la 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� une partie de la section sur l'indication des bugs.
Les personnes suivantes ont fourni des informations et un retour sur ce document :
Les traductions de ce document sont faites par :
En plus d'�crire ce HOWTO, maintenir la page glibc 2 pour Linux, 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 � ejg3@cornell.edu.
Copyright (c) 1997 par Eric Green. Ce document peut �tre distribu� sous les termes de la licence LDP.