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.