<Precedenti | Contenuti | Succ.>
6.9.1. Installazione di Glibc
Note:
Il sistema di compilazione di Glibc è autonomo e si installerà perfettamente, anche se il file delle specifiche del compilatore e il linker puntano ancora a /utensili. Le specifiche e il linker non possono essere modificati prima dell'installazione di Glibc perché i test di configurazione automatica di Glibc darebbero risultati falsi e vanificano l'obiettivo di ottenere una build pulita.
Note:
Il sistema di compilazione di Glibc è autonomo e si installerà perfettamente, anche se il file delle specifiche del compilatore e il linker puntano ancora a /utensili. Le specifiche e il linker non possono essere modificati prima dell'installazione di Glibc perché i test di configurazione automatica di Glibc darebbero risultati falsi e vanificano l'obiettivo di ottenere una build pulita.
Alcuni dei programmi Glibc utilizzano il compilante non FHS /var/db directory per memorizzare i dati di runtime. Applicare la seguente patch per fare in modo che tali programmi memorizzino i propri dati di runtime nelle posizioni conformi a FHS:
patch -Np1 -i ../glibc-2.30-fhs-1.patch
patch -Np1 -i ../glibc-2.30-fhs-1.patch
Risolto un problema introdotto con il kernel Linux-5.2:
sed -i '/asm.socket.h/a# include ' \ sysdeps/unix/sysv/linux/bits/socket.h
sed -i '/asm.socket.h/a# include ' \ sysdeps/unix/sysv/linux/bits/socket.h
-sfv
-sfv
-sfv
-sfv
../lib/ld-linux-x86-64.so.2 /lib64
../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
../lib/ld-linux-x86-64.so.2 /lib64
../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
Crea un collegamento simbolico per la conformità LSB. Inoltre, per x86_64, crea un collegamento simbolico di compatibilità richiesto per il corretto funzionamento del caricatore dinamico:
caso $(uname -m) in
caso $(uname -m) in
io?86) ln
;;
x86_64) n
ln
;;
che C
-sfv
ld-linux.so.2 /lib/ld-lsb.so.3
io?86) ln
;;
x86_64) n
ln
;;
che C
La documentazione di Glibc consiglia di compilare Glibc in una directory di build dedicata:
mkdir -v build build cd
mkdir -v build build cd
Prepara Glibc per la compilazione:
CC="gcc -ffile-prefix-map=/tools=/usr" \
../configure --prefix=/usr
--disable-error
--enable-kernel=3.2
--enable-stack-protector=forte
--with-headers=/usr/include libc_cv_slibdir=/lib
\
\
\
\
\
CC="gcc -ffile-prefix-map=/tools=/usr" \
../configure --prefix=/usr
--disable-error
--enable-kernel=3.2
--enable-stack-protector=forte
--with-headers=/usr/include libc_cv_slibdir=/lib
Il significato delle opzioni e dei nuovi parametri di configurazione:
CC="gcc -file-prefix-map=/tools=/usr"
Fai in modo che GCC registri qualsiasi riferimento ai file in /tools nel risultato della compilazione come se i file risiedessero in /usr. Ciò evita l'introduzione di percorsi non validi nei simboli di debug.
--disable-error
Questa opzione disabilita l'opzione -Werror passata a GCC. Ciò è necessario per eseguire la suite di test.
--enable-stack-protector=forte
Questa opzione aumenta la sicurezza del sistema aggiungendo codice extra per verificare la presenza di buffer overflow, come gli attacchi di distruzione dello stack.
--with-headers=/usr/include
Questa opzione indica al sistema di compilazione dove trovare le intestazioni dell'API del kernel. Per impostazione predefinita, tali intestazioni vengono ricercate in
/strumenti/include.
libc_cv_slibdir=/lib
Questa variabile imposta la libreria corretta per tutti i sistemi. Non vogliamo che venga utilizzata lib64.
Compila il pacchetto:
make
make
Consigli
In questa sezione, la suite di test per Glibc è considerata critica. Non saltarlo in nessun caso.
Consigli
In questa sezione, la suite di test per Glibc è considerata critica. Non saltarlo in nessun caso.
/libreria ;;
/libreria ;;
-sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;
-sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;
Generalmente alcuni test non passano. Gli errori dei test elencati di seguito sono generalmente ignorabili.
case $(uname i?86) ln x86_64) ln
che C
-m) a
-sfnv $PWD/elf/ld-linux.so.2
case $(uname i?86) ln x86_64) ln
che C
Note:
Il collegamento simbolico sopra è necessario per eseguire i test in questa fase della costruzione nell'ambiente chroot. Verrà sovrascritto nella fase di installazione di seguito.
Note:
Il collegamento simbolico sopra è necessario per eseguire i test in questa fase della costruzione nell'ambiente chroot. Verrà sovrascritto nella fase di installazione di seguito.
fare un controllo
fare un controllo
Potresti vedere alcuni errori di test. La suite di test Glibc dipende in qualche modo dal sistema host. Questo è un elenco dei problemi più comuni riscontrati per alcune versioni di LFS:
· XNUMX€ misc/tst-ttyname è noto che fallisce nell'ambiente chroot di LFS.
· XNUMX€ inet/tst-idna_name_classify è noto che fallisce nell'ambiente chroot di LFS.
· XNUMX€ posix/tst-getaddrinfo4 e posix/tst-getaddrinfo5 potrebbe non funzionare su alcune architetture.
• Il nss/tst-nss-files-host-multi test potrebbe non riuscire per ragioni non determinate.
• Il rt/tst-cputimer{1,2,3} i test dipendono dal kernel del sistema host. È noto che i kernel 4.14.91–4.14.96, 4.19.13–4.19.18 e 4.20.0–4.20.5 causano il fallimento di questi test.
• I test di matematica a volte falliscono quando vengono eseguiti su sistemi in cui la CPU non è un processore Intel o AMD relativamente nuovo.
Sebbene sia un messaggio innocuo, la fase di installazione di Glibc si lamenterà dell'assenza di /etc/ld.so.conf. Evita questo avviso con:
tocca /etc/ld.so.conf
tocca /etc/ld.so.conf
Correggi il Makefile generato per saltare un controllo di integrità non necessario che fallisce nell'ambiente parziale LFS:
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
Installa il pacchetto:
make install
make install
Installa il file di configurazione e la directory di runtime per nsd:
cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd
cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd
Quindi, installa le impostazioni locali che possono far rispondere il sistema in una lingua diversa. Nessuna delle versioni locali è necessaria, ma se ne mancano alcune, le suite di test dei pacchetti futuri salteranno i test case importanti.
Le singole versioni locali possono essere installate utilizzando il localdef programma. Ad esempio, il primo localdef comando di seguito combina il /usr/share/i18n/locales/cs_CZ definizione della localizzazione indipendente dal set di caratteri con il /usr/share/i18n/charaps/UTF-8.gz definizione charmap e aggiunge il risultato al /usr/lib/locale/locale-archivio file. Le seguenti istruzioni installeranno il set minimo di impostazioni locali necessarie per la copertura ottimale dei test:
mkdir -pv /usr/lib/locale
localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i el_GR -f ISO-8859-7 el_GR localedef -i en_GB -f UTF-8 en_GB.UTF-8 localedef -i en_HK -f ISO-8859-1 en_HK localedef -i en_PH -f ISO-8859-1 en_PH localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fa_IR -f UTF-8 fa_IR localedef - i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f UTF-8 it_IT.UTF-8 localedef -i ja_JP -f EUC-JP ja_JP
localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> /dev/null || true localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 localedef -i zh_CN -f GB18030 zh_CN .GB18030
localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
Inoltre, installa le impostazioni internazionali per il tuo paese, la lingua e il set di caratteri.
In alternativa, installa tutte le versioni locali elencate in glibc-2.30/localedata/SUPPORTED file (include tutte le impostazioni internazionali elencate sopra e molte altre) contemporaneamente con il seguente comando che richiede tempo:
make localedata/install-locales
make localedata/install-locales
Quindi usa il localdef comando per creare e installare locali non elencati in glibc-2.30/localedata/ SUPPORTATO file nel caso improbabile che tu ne abbia bisogno.
Note:
Glibc ora utilizza libidn2 per la risoluzione dei nomi di dominio internazionalizzati. Questa è una dipendenza dal tempo di esecuzione. Se questa funzionalità è necessaria, le istruzioni per l'installazione di libidn2 sono nella pagina BLFS libidn2.
Note:
Glibc ora utilizza libidn2 per la risoluzione dei nomi di dominio internazionalizzati. Questa è una dipendenza dal tempo di esecuzione. Se questa funzionalità è necessaria, le istruzioni per l'installazione di libidn2 sono nella pagina BLFS libidn2.