5.6. Glibc-2.3.4

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, manipolazione stringhe, individuazione pattern, aritmetica, e così via.

Tempo approssimativo di costruzione: 11.8 SBU
Spazio su disco richiesto: 454 MB
L'installazione dipende da: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo

5.6.1. Installazione di Glibc

Questo pacchetto è noto per avere problemi quando i suoi flag di ottimizzazione (incluse le opzioni -march e -mcpu) vengono cambiati. Se è stata definita una qualunque delle variabili ambiente che si sovrappone alle ottimizzazioni di default, come CFLAGS e CXXFLAGS, disallocarle quando si costruisce Glibc.

È bene notare che compilare Glibc in qualunque modo diverso dal metodo suggerito in questo libro mette a rischio la stabilità del sistema.

Glibc ha due test che falliscono quando il kernel funzionante è il 2.6.11 o successivo. Si è scoperto che il problema sono gli stessi test, non la libreria C o il kernel. Se si vuole eseguire la testsuite applicare questa patch:

patch -Np1 -i ../glibc-2.3.4-fix_test-1.patch

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

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

Preparare Glibc per la compilazione:

../glibc-2.3.4/configure --prefix=/tools \
     --disable-profile --enable-add-ons \
     --enable-kernel=2.6.0 --with-binutils=/tools/bin \
     --without-gd --with-headers=/tools/include \
     --without-selinux

Significato delle opzioni di configurazione:

--disable-profile

Questa costruisce le librerie senza informazioni di profilo. Omettere questa opzione se è necessaria la profilazione nei tool temporanei.

--enable-add-ons

Questa dice a Glibc di usare l'add-on NPTL come propria libreria di threading.

--enable-kernel=2.6.0

Questa dice a Glibc di compilare la libreria con il supporto per i kernel Linux 2.6.x.

--with-binutils=/tools/bin

Sebbene non richiesto, questa opzione assicura che non ci siano errori riguardo quali programmi di Binutils usare durante la costruzione di Glibc.

--without-gd

Questa impedisce la costruzione del programma memusagestat, che si ostina a linkarsi verso le librerie dell'host (libgd, libpng, libz, ecc.).

--with-headers=/tools/include

Questo dice a Glibc di compilarsi verso gli header recentemente installati nella directory tools, così che sappia esattamente quali sono le caratteristiche del kernel e possa ottimizzare se stessa di conseguenza.

--without-selinux

Quando si costruisce da host che includono funzionalità SELinux (es. Fedora Core 3) Glibc verrà costruito con supporto per SELinux. Poiché gli strumenti dell'ambiente LFS non contengono supporto per SELinux una Glibc compilata con tale supporto non riuscirà ad operare correttamente.

Durante questo stage può apparire il seguente avviso:

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

Il programma mancante o incompatibile msgfmt è generalmente innocuo, ma talvolta può causare problemi quando si esegue la suite di test. Questo programma msgfmt è parte del pacchetto Gettext che la distribuzione dovrebbe fornire. Se msgfmt è presente ma giudicato incompatibile, aggiornare il pacchetto Gettext del sistema o continuare senza di esso e vedere se la suite di test funziona ugualmente senza problemi.

Compilare il pacchetto:

make

La compilazione è ora completa. Come citato in precedenza, eseguire le suite di test per i tool temporanei installati in questo capitolo non è obbligatorio. Per eseguire la suite di test di Glibc (se lo si desidera), digitare il seguente comando:

make check

Per una discussione dei fallimenti dei test che sono di particolare importanza vedere Sezione 6.11, “Glibc-2.3.4.”

In questo capitolo, alcuni test possono venire condizionati negativamente da tool esistenti o problemi di ambiente del sistema in uso. I fallimenti dei test di Glibc in questo capitolo sono tipicamente non preoccupanti. La Glibc installata nel Capitolo 6 è quella che finirà per essere utilizzata, ed è questa che avrà bisogno di superare la maggior parte dei test (anche nel Capitolo 6, alcuni fallimenti avverranno comunque, ad esempio, con i math test).

Quando si incontrano fallimenti, prenderne nota, quindi continuare ridando il comando make check. La suite di test dovrebbe riprendere da dove si era interrotta e continuare. Questa sequenza stop-start può essere aggirata digitando un comando make -k check. Se si usa questa opzione, accertarsi di fare il log dell'output così da poter esaminare più tardi i fallimenti nel file log.

La fase di installazione di Glibc emetterà un avviso innocuo al termine riguardante l'assenza di /tools/etc/ld.so.conf. Evitare questo avviso con:

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

Installare il pacchetto:

make install

Diversi paesi e culture hanno diverse convenzioni su come comunicare. Queste convenzioni spaziano dal formato per rappresentare date e ore a questioni più complesse, come la lingua parlata. L'“internazionalizzazione” dei programmi GNU funziona con le localizzazioni.

[Nota]

Nota

Se non sono state eseguite le suite di test in questo capitolo (come da raccomandazione), non c'è bisogno di installare ora le localizzazioni. Le localizzazioni appropriate verranno installate nel prossimo capitolo.

Per installare comunque le localizzazioni di Glibc, usare il seguente comando:

make localedata/install-locales

Per risparmiare tempo, un'alternativa all'esecuzione del comando precedente (che genera ed installa ogni Glibc locale di cui è a conoscenza) è l'installazione solo di quelle localizzazioni che si vogliono o sono necessarie. Questo lo si può ottenere usando il comando localedef. Informazioni su questo comando si trovano nel file INSTALL nei sorgenti di Glibc. Tuttavia, c'è un certo numero di localizzazioni che sono essenziali perché i test di futuri pacchetti passino, in particolare, i test libstdc++ da GCC. Le seguenti istruzioni, invece del target install-locales, usato in precedenza, installerà il minimo set necessario di localizzazioni perché i test funzionino con successo:

mkdir -pv /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

Dettagli su questo pacchetto si trovano nella Sezione 6.11.4, “Contenuti di Glibc.”