Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<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


Immagine

-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


Immagine

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.


Immagine

Immagine

Immagine

/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:


Immagine

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


Immagine

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.


Il miglior sistema operativo cloud computing su OnWorks: