<Precedenti | Contenuti | Succ.>
5.7.1. Installazione di Glibc
La documentazione di Glibc consiglia di compilare Glibc in una directory di build dedicata:
mkdir -v build build cd
mkdir -v build build cd
Quindi, prepara Glibc per la compilazione:
../configura \
--prefix=/strumenti \
--host=$LFS_TGT \
--build=$(../scripts/config.guess) \
--enable-kernel=3.2 \
--with-headers=/strumenti/includi
../configura \
--prefix=/strumenti \
--host=$LFS_TGT \
--build=$(../scripts/config.guess) \
--enable-kernel=3.2 \
--with-headers=/strumenti/includi
Il significato delle opzioni di configurazione:
--host=$LFS_TGT, --build=$(../scripts/config.guess)
L'effetto combinato di questi switch è che il sistema di compilazione di Glibc si configura per la compilazione incrociata, utilizzando il cross-linker e il cross-compiler in /utensili.
--enable-kernel=3.2
Questo indica a Glibc di compilare la libreria con il supporto per i kernel Linux 3.2 e successivi. Le soluzioni alternative per i kernel più vecchi non sono abilitate.
--with-headers=/strumenti/includi
Questo indica a Glibc di compilarsi in base agli header installati di recente nella directory degli strumenti, in modo da sapere esattamente quali funzionalità ha il kernel e potersi ottimizzare di conseguenza.
Durante questa fase potrebbe apparire il seguente avviso:
configurare: ATTENZIONE:
*** Questi programmi ausiliari sono mancanti o
*** versioni incompatibili: msgfmt
*** Alcune funzionalità saranno disabilitate.
*** Controllare il file INSTALL per le versioni richieste.
configurare: ATTENZIONE:
*** Questi programmi ausiliari sono mancanti o
*** versioni incompatibili: msgfmt
*** Alcune funzionalità saranno disabilitate.
*** Controllare il file INSTALL per le versioni richieste.
Il mancante o incompatibile msgfmt programma è generalmente innocuo. Questo msgfmt Il programma fa parte del pacchetto Gettext che la distribuzione host dovrebbe fornire.
Note:
Ci sono state segnalazioni che questo pacchetto potrebbe non funzionare se compilato come "make parallelo". In tal caso, rieseguire il comando make con l'opzione "-j1".
Note:
Ci sono state segnalazioni che questo pacchetto potrebbe non funzionare se compilato come "make parallelo". In tal caso, rieseguire il comando make con l'opzione "-j1".
Compila il pacchetto:
make
make
Installa il pacchetto:
make install
make install
Attenzione
A questo punto, è fondamentale fermarsi e assicurarsi che le funzioni di base (compilazione e collegamento) della nuova toolchain funzionino come previsto. Per eseguire un controllo di integrità, eseguire i seguenti comandi:
echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /strumenti'
echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /strumenti'
Se tutto funziona correttamente, non dovrebbero esserci errori e l'output dell'ultimo comando sarà del tipo:
[Richiedente interprete del programma: /tools/lib64/ld-linux-x86-64.so.2]
[Richiedente interprete del programma: /tools/lib64/ld-linux-x86-64.so.2]
Si noti che per le macchine a 32 bit, il nome dell'interprete sarà /strumenti/lib/ld-linux.so.2.
Se l'output non viene visualizzato come sopra o non viene visualizzato alcun output, significa che qualcosa non va. Indagare e ripercorrere i passaggi per individuare il problema e correggerlo. Questo problema deve essere risolto prima di continuare.
Una volta che tutto è a posto, pulisci i file di prova:
rm -v dummy.c a.out
rm -v dummy.c a.out
Note:
La compilazione di Binutils nella sezione successiva servirà come ulteriore verifica della corretta compilazione della toolchain. Se Binutils non viene compilato, è un'indicazione che qualcosa è andato storto nelle precedenti installazioni di Binutils, GCC o Glibc.
Note:
La compilazione di Binutils nella sezione successiva servirà come ulteriore verifica della corretta compilazione della toolchain. Se Binutils non viene compilato, è un'indicazione che qualcosa è andato storto nelle precedenti installazioni di Binutils, GCC o Glibc.