Avanti Indietro Indice

4. Installare come libreria di test.

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.

4.1 Compilare ed installare.

Prerequisiti.

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.

Estrarre i sorgenti.

È 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.

Configurazione.

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

Compilare ed installare.

Per compilare e verificare, si esegue:

 make
 make check
Se il comando 'make check' ha successo, installare la libreria:
 make install

4.2 Aggiornare il loader dinamico.

  1. Creare un collegamento dal nuovo 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.
  2. Modificare /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
    

4.3 Configurare gcc.

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.

4.4 Aggiornare i collegamenti per header file.

È 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.)

4.5 Verificare la propria installazione.

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.


Avanti Indietro Indice