Questa sezione descrive come installare glibc 2 come libreria di test. Qualsiasi cosa compilata sarà collegata alle librerie esistenti a meno che non si usino alcuni parametri extra per il collegamento alle nuove librerie. Pare che i percorsi siano compilati in pochi file, quindi probabilmente è necessario installare la libreria dalla versione sorgente.
Su un i586@133 con 64 MB di RAM, sono necessarie circa 3 ore per compilare le librerie complete con le aggiunte. Su un i686@200 carico, è necessaria circa mezz'ora.
È necessario estrarre i sorgenti dagli archivi così che si possano compilare. Il modo migliore per farlo è:
tar xzf glibc-2.0.6.tar.gz
cd glibc-2.0.6
tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
tar xzf ../glibc-crypt-2.0.6.tar.gz
tar xzf ../glibc-localedata-2.0.6.tar.gz
Questi comandi estrarranno le directory linuxthreads, crypt e localedata in
glibc-2.0.6 dove configure potrà trovare le rispettive aggiunte.
Nella directory glibc-2.0.6, se ne crea un'altra chiamata compile, e la si rende corrente. Tutto il lavoro sarà fatto in questa directory, cosa che semplificherà la pulizia. (Gli sviluppatori non sono ancora stati in grado di realizzare un 'make clean' perfetto.)
mkdir compile
cd compile
Si esegue ../configure
. Per usare i pacchetti aggiuntivi, è
necessario specificarli con --enable-add-ons, ad esempio
--enable-add-ons=linuxthreads,crypt,localedata.
È anche necessario scegliere una directory di installazione.
/usr/i486-linuxglibc2 è una buona scelta. Il comando per configure quindi
sarà:
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
Per compilare e verificare, si esegue:
make
make check
Se il comando 'make check' ha successo, installare la libreria:
make install
ld.so
a
/lib/ld-linux.so.2
:
ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
Questa è la sola libreria la cui locazione è prefissata una volta che un
programma sia stato collegato e l'uso di un riferimento in /lib
faciliterà l'aggiornamento a glibc come libreria C primaria, una volta che
la versione stabile sia stata rilasciata./etc/ld.so.conf
. È necessario aggiungere un
percorso alla directory lib dove le nuove librerie risiedono, che sarà
<prefix>/lib
, come /usr/i486-linuxglibc2/lib
per
la scelta precedente. Dopo aver corretto /etc/ld.so.conf
, si
esegue
ldconfig -v
L'ultimo passo dell'installazione è aggiornare /usr/lib/gcc-lib
in
modo che gcc sappia come usare le nuove librerie. Per prima cosa è necessario
duplicare la configurazione esistente. Per verificare la configurazione
corrente, si usa l'opzione -v:
% gcc -v
Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
In questo caso, i486-unknown-linux è il sistema e 2.7.2.2 è la versione.
È necessario copiare /usr/lib/gcc-lib/<system>
nella nuova
directory di test per il sistema:
cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxglibc2
Si rende corrente la nuova directory test di sistema e la directory di
versione
cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
e si corregge il file specs
presente. In questo file, si cambia
/lib/ld-linux.so.1
a /lib/ld-linux.so.2
. Inoltre è
necessario anche eliminare tutte le espressioni %{...:-lgmon}
nel file, dal momento che glibc non usa la libreria gmon per il profiling.
Un esempio di file specs può essere trovato nella sezione
Esempio file specs.
È necessario creare collegamenti nella nuova directory di link alle altre directory include:
cd /usr/i486-linuxglibc2/include
ln -s /usr/src/linux/include/linux
ln -s /usr/src/linux/include/asm
ln -s /usr/X11R6/include/X11
Alcune librerie come ncurses necessitano di avere i propri file posti in
questa directory. Si dovrà copiare o collegare i file in questione da
/usr/include
. (Probabilmente sarà necessario ricompilarne alcune
con glibc2 per farle funzionare. In questi casi, basta compilare ed
installare il pacchetto in /usr/i486-linuxglibc2
.)
Per verificare l'installazione, si crei il seguente programma in un file glibc.c:
#include <stdio.h>
main()
{
printf("hello world!\n");
}
e si compili con l'opzione "-b <directory base> -nostdinc
-I<directory installazione>/include -I/usr/lib/gcc-lib/<nuova
directory di sistema>/<gcc version>/include":
% gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include
-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
Si usi ldd per verificare che il programma è stato collegato con glibc2 e
non la vecchia libc:
% ldd glibc
libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.6.so (0x4000d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Se compila, i collegamenti risultano e l'output del programma quando eseguito
è "hello world!" l'installazione ha avuto successo.