Avanti Indietro Indice

6. Compilare con la libreria non primaria libc.

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.

6.1 Avviso per l'uso di libc non primarie.

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.

6.2 Compilare programma con una glibc di test

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.

6.3 Compilare programmi con libc 5 quando glibc è la libreria primaria.

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.


Avanti Indietro Indice