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. Rappelez-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é en dynamique et est utilisé avant que les partitions non root soient montées, toutes les bibliothèques liées doivent être sur la partition root. En suivant la procédure d'installation de la section précéedente pour installer glibc comme bibliothèque C principale, la vieille libc reste dans /lib, qui sera sur votre partition root. 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 and LDFLAGS makefile options:
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.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre