Ci sono situazioni in cui si desidera usare una libreria alternativa con cui compilare i propri programmi. Questa sezione spiega come raggiungere questo scopo, usando le directory ed i nomi di installazione degli esempi delle precedenti due sezioni. Si ricordi di correggere i nomi secondo la propria configurazione.
Prima di compilare un programma che sarà usato nella fase di boot del
sistema, si ricordi che se il programma è collegato dinamicamente ed è
usato prima che le partizioni non root siano montate, tutte le librerie
collegate dovranno essere presenti nella partizione di root. Seguendo il
percorso di installazione della precedente sezione su come installare glibc
come libreria primaria, la vecchia libreria è lasciata in /lib
,
che sarà nella propria partizione di root. Questo significa che tutti i
programmi saranno in grado di funzionare durante la fase di boot. Tuttavia
se /usr
è su una diversa partizione e si installa glibc come
libreria di test in /usr/i486-linuxglibc2
, qualsiasi nuovo
programma compilato con glibc non funzionerà fino a quando non si sia
montata /usr
.
Per compilare un programma con una installazione di prova di glibc, è
necessario impostare i percorsi di include a quelli di glibc.
Specificando "-nostdinc" si negheranno i normali percorsi, e
"-I/usr/i486-linuxglibc2/include" farà puntare agli include
di glibc. Sarà anche necessario specificare gli include di gcc che
si trovano in /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include
(assumendo che si sia installata la libreria di test in i486-linuxglibc2
con versione di gcc 2.7.2.2).
Per collegare un programma con una libreria di prova glibc, è necessario specificare la configurazione di gcc. Questo si ottiene usando l'opzione "-b i486-linuxglibc2".
Per la maggior parte dei programmi, si possono specificare queste nuove
opzioni aggiungendole alle opzioni di makefile $CFLAGS
e
$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
Se si sta usando uno script di configurazione, si definiscano le variabili
d'ambiente $CFLAGS
e $LDFLAGS
(usando
env/setenv per csh/tcsh, o set/export per sh/bash/etc) prima di eseguire
configure. I makefile generati in questo modo dovrebbero avere
$CFLAGS
e $LDFLAGS
corretti. Non tutti
i file di configurazione fanno riferimento a queste variabili, quindi
è necessario controllare l'esecuzione di configure e correggere manualmente
i makefile se necessario.
Se i programmi che si compilano eseguono solo gcc (e non direttamente cpp o binutils), si può usare lo script che segue per evitare di scrivere tutte le opzioni:
#!/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 "$@"
Si può usare questo script invece di "gcc" per la compilazione.
Per compilare un programma con le vecchie librerie avendo installato glibc come libreria primaria, è necessario impostare i percorsi di inclusione ai vecchi include. Specificando "-nostdinc" si nega all'accesso al percorso normale, e "-I/usr/i486-linuxlibc5/include" farà puntare agli include di libc. Inoltre è necessario specificare "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" per accedere a specifici include gcc. Si ricordi di correggere questi percorsi sulla base dei nomi che si sono dati alle proprie directory e versione di gcc.
Per collegare un programma con la propria vecchia libc, è necessario specificare la configurazione, ed è fatto con: "-b i486-linuxlibc5".
Per la maggior parte dei programmi, si può specificare le nuove opzioni
aggiungendole alle opzioni di makefile $CFLAGS
e
$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
Se si sta usando uno script di configurazione, si definiscano le variabili
d'ambiente $CFLAGS
e $LDFLAGS
(usando
env/setenv per csh/tcsh, o set/export per sh/bash/etc) prima di eseguire
configure. I makefile generati in questo modo dovrebbero avere
$CFLAGS
e $LDFLAGS
corretti. Non tutti
i file di configurazione fanno riferimento a queste variabili, quindi
è necessario controllare l'esecuzione di configure e correggere manualmente
i makefile se necessario.
Se i programmi che si compilano eseguono solo gcc (e non direttamente cpp o binutils), si può usare lo script che segue per evitare di scrivere tutte le opzioni:
#!/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 "$@"
Si può usare questo script invece di "gcc" per la compilazione.