Glibc-2.3.3-lfs-5.1

Il pacchetto Glibc contiene la libreria C principale. Questa libreria fornisce tutte le routine di base per allocare memoria, cercare directory, aprire e chiudere file, leggerli e scriverli, manipolare stringhe, confronti, aritmetiche ecc.

Tempo approssimativo di costruzione:  11.8 SBU
Spazio necessario sul disco:     734.2 MB

L'installazione di Glibc dipende da: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Installazione di Glibc

Questo pacchetto è noto per avere problemi quando vengono cambiati i suoi flag di ottimizzazione predefiniti (incluse le opzioni -march e -mcpu). Pertanto, se doveste aver definito variabili di ambiente che disabilitano le nostre ottimizzazioni predefinite, come i flag CFLAGS e CXXFLAGS, raccomandiamo di eliminarle quando costruite Glibc.

Fondamentalmente, compilare Glibc in qualunque altro modo rispetto a quanto suggerito nel libro significa mettere a rischio la stabilità del sistema.

La documentazione di Glibc raccomanda di costruire Glibc fuori dalla directory dei sorgenti, in una directory di costruzione dedicata:

mkdir ../glibc-build
cd ../glibc-build

Ora preparate Glibc per la compilazione:

../glibc-2.3.3-lfs-5.1/configure --prefix=/tools \
    --disable-profile --enable-add-ons=linuxthreads \
    --with-binutils=/tools/bin --with-headers=/tools/include \
    --without-gd --without-cvs

Il significato delle opzioni di configurazione:

  • --disable-profile: questo costruisce le librerie senza informazioni di profilo. Omettete questa opzione se volete fare profili negli strumenti temporanei.

  • --enable-add-ons=linuxthreads: questo dice a Glibc di usare l'add-on Linuxthreads come sua libreria di thread.

  • --with-binutils=/tools/bin and --with-headers=/tools/include: questi switch, a dire la verità, non sono necessari. Ma garantiscono che nulla vada storto nel caso che gli headers del kernel e i programmi delle Binutils vengano usati durante la costruzione di Glibc.

  • --without-gd: questo impedisce la costruzione del programma memusagestat, che, abbastanza stranamente, continua a linkarsi verso le librerie sull'host (libgd, libpng, libz, e così via).

  • --without-cvs: questo è pensato per impedire a Makefiles di tentare un check automatico di CVS quando si usa uno snapshot CVS. Tuttavia ormai non è più necessario. Lo utilizziamo perchè sopprima un noioso ma innocuo warning riguardante un programma autoconf mancante.

Durante questa fase potreste vedere il seguente warning:

configure: WARNING:
*** These auxiliary programs are missing or incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

L'errore di programma mancante o incompatibile per msgfmt normalmente è innocuo, ma si ritiene che talvolta causi problemi quando si avvia la suite di test.

Compilate il pacchetto:

make AUTOCONF=no

La compilazione è ora completa. Come discusso in precedenza, non raccomandiamo di avviare le suite di test per gli strumenti temporanei qui, in questo capitolo. Se, nonostante ciò, volete avviare la suite di test di Glibc, potete farlo con il seguente comando:

make check

La suite di test di Glibc è altamente dipendente da certe funzioni del vostro sistema host, in particolare il kernel. Inoltre, in questo capitolo certi test possono essere influenzati negativamente da tool esistenti o problemi nell'ambiente del sistema host. Fortunatamente questo problema non ci sarà quando avvieremo la suite di test di Glibc dentro l'ambiente chroot del Capitolo 6. In generale, la suite di test di Glibc dovrebbe sempre passare. Tuttavia, come accennato in precedenza, in certe circostanze qualche fallimento è inevitabile. Qui c'è una lista dei problemi più comuni che si incontrano:

  • I test math a volte falliscono su sistemi ove la CPU non è una Intel originale relativamente nuova o una autentica AMD. È anche noto che qui una causa possono essere certe impostazioni di ottimizzazione.

  • Il test gettext a volte fallisce per cause dovute al sistema host. Le ragioni esatte non sono ancora chiare.

  • Il test atime talvolta fallisce quando la partizione LFS è montata con l'opzione noatime o a causa di altre opzioni del file system.

  • Il test shm potrebbe fallire quando sul sistema host è in funzione il file system devfs ma non è montato il file system tmpfs su /dev/shm a causa della mancanza del supporto per tmpfs da parte del kernel.

  • Su hardware vecchi o lenti certi test potrebbero fallire a causa di time out dei test.

Riassumendo, non preoccupatevi troppo se vedete fallimenti nelle suite di test di Glibc in questo capitolo. Le Glibc nel Capitolo 6 sono quelle che alla fine utilizzeremo e noi vogliamo che i test passino su queste (ma anche lì potrebbero avvenire certi fallimenti, ad esempio sul test math). Se doveste sperimentare un fallimento, prendete nota, quindi continuate dando di nuovo il comando make check. La suite di test dovrebbe riprendere da dove si era interrotta e continuare. Potete aggirare la sequenza start-stop digitando make -k check . Ma se fate questo, assicuratevi di loggare l'output, in modo da poter esaminare il file in seguito e controllare il numero totale di fallimenti.

Sebbene sia un messaggio innocuo, lo stage di installazione di Glibc al termine si lamenterà per l'assenza di /tools/etc/ld.so.conf. Per prevenire questo fastidioso messaggio potete digitare:

mkdir /tools/etc
touch /tools/etc/ld.so.conf

Ora installate il pacchetto:

make install

Paesi e culture diverse hanno diverse convenzioni e standard. Queste convenzioni vanno dalle più semplici, come i formati per rappresentare data e ora, ad altre molto complesse, come la lingua parlata. L'“internazionalizzazione ” dei programmi GNU funziona attraverso locales.

[Note]

Nota

Se non avviate le suite di test in questo capitolo come da noi raccomandato, non ha senso installare ora locales. Installeremo locales nel prossimo capitolo.

Se tuttavia volete installare ugualmente le localizzazioni di Glibc, inserite il seguente comando:

make localedata/install-locales

Un'alternativa al precedente comando è l'installazione solo delle localizzazioni di cui avete bisogno o che volete. Questo può essere fatto utilizzando il comando localedef. Informazioni su questo si possono trovare nel file INSTALL nei sorgenti di Glibc. Tuttavia, un certo numero di localizzazioni sono essenziali perché i test dei futuri pacchetti passino, in particolare i test libstdc++ di GCC. Le istruzioni seguenti, invece di installare tutte le localizzazioni come sopra, installeranno solamente il set di localizzazioni necessarie perché i test funzionino con successo:

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
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 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 it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP

I dettagli su questo pacchetto si trovano nella sezione chiamata “Contenuti di Glibc”.