<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>Glibc 2 HOWTO: Installare come libreria di test.</TITLE> <LINK HREF="Glibc2-HOWTO-5.html" REL=next> <LINK HREF="Glibc2-HOWTO-3.html" REL=previous> <LINK HREF="Glibc2-HOWTO.html#toc4" REL=contents> </HEAD> <BODY> <A HREF="Glibc2-HOWTO-5.html">Avanti</A> <A HREF="Glibc2-HOWTO-3.html">Indietro</A> <A HREF="Glibc2-HOWTO.html#toc4">Indice</A> <HR> <H2><A NAME="test-install"></A> <A NAME="s4">4. Installare come libreria di test.</A></H2> <P> <!-- glibc!test --> <P>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. <P> <H2><A NAME="ss4.1">4.1 Compilare ed installare.</A> </H2> <P> <P> <H3>Prerequisiti.</H3> <P> <!-- glibc!test!prerequisiti --> <P> <UL> <LI>Circa 150 MB di spazio libero</LI> <LI>GNU make 3.75</LI> <LI>gcc >= 2.7.2 (meglio 2.7.2.1)</LI> <LI>binutils 2.8.1 (per alpha è necessario ???)</LI> <LI>bash 2.0</LI> <LI>autoconf 2.12 (se si cambia configure.in)</LI> <LI>texinfo 3.11</LI> </UL> <P>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. <P> <H3>Estrarre i sorgenti.</H3> <P> <!-- glibc!test!sorgenti, estrarre --> <P>È necessario estrarre i sorgenti dagli archivi così che si possano compilare. Il modo migliore per farlo è: <BLOCKQUOTE><CODE> <PRE> 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 </PRE> </CODE></BLOCKQUOTE> Questi comandi estrarranno le directory linuxthreads, crypt e localedata in glibc-2.0.6 dove configure potrà trovare le rispettive aggiunte. <P> <H3>Configurazione.</H3> <P> <!-- glibc!test!configurazione --> <P>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.) <BLOCKQUOTE><CODE> <PRE> mkdir compile cd compile </PRE> </CODE></BLOCKQUOTE> Si esegue <CODE>../configure</CODE>. 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à: <BLOCKQUOTE><CODE> <PRE> ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2 </PRE> </CODE></BLOCKQUOTE> <P> <H3>Compilare ed installare.</H3> <P> <!-- glibc!test!compilare --> <!-- glibc!test!installare --> <P>Per compilare e verificare, si esegue: <BLOCKQUOTE><CODE> <PRE> make make check </PRE> </CODE></BLOCKQUOTE> Se il comando 'make check' ha successo, installare la libreria: <BLOCKQUOTE><CODE> <PRE> make install </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss4.2">4.2 Aggiornare il loader dinamico.</A> </H2> <P> <!-- glibc!test!loader dinamico, aggiornare --> <!-- glibc!test!ld.so.conf, aggiornare --> <P> <OL> <LI>Creare un collegamento dal nuovo <CODE>ld.so</CODE> a <CODE>/lib/ld-linux.so.2</CODE>: <BLOCKQUOTE><CODE> <PRE> ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2 </PRE> </CODE></BLOCKQUOTE> Questa è la sola libreria la cui locazione è prefissata una volta che un programma sia stato collegato e l'uso di un riferimento in <CODE>/lib</CODE> faciliterà l'aggiornamento a glibc come libreria C primaria, una volta che la versione stabile sia stata rilasciata.</LI> <LI>Modificare <CODE>/etc/ld.so.conf</CODE>. È necessario aggiungere un percorso alla directory lib dove le nuove librerie risiedono, che sarà <CODE><prefix>/lib</CODE>, come <CODE>/usr/i486-linuxglibc2/lib</CODE> per la scelta precedente. Dopo aver corretto <CODE>/etc/ld.so.conf</CODE>, si esegue <BLOCKQUOTE><CODE> <PRE> ldconfig -v </PRE> </CODE></BLOCKQUOTE> </LI> </OL> <P> <H2><A NAME="ss4.3">4.3 Configurare gcc.</A> </H2> <P> <!-- glibc!test!gcc, configurare --> L'ultimo passo dell'installazione è aggiornare <CODE>/usr/lib/gcc-lib</CODE> 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: <BLOCKQUOTE><CODE> <PRE> % gcc -v Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs gcc version 2.7.2.2 </PRE> </CODE></BLOCKQUOTE> In questo caso, i486-unknown-linux è il sistema e 2.7.2.2 è la versione. È necessario copiare <CODE>/usr/lib/gcc-lib/<system></CODE> nella nuova directory di test per il sistema: <BLOCKQUOTE><CODE> <PRE> cd /usr/lib/gcc-lib/ cp -r i486-unknown-linux i486-linuxglibc2 </PRE> </CODE></BLOCKQUOTE> Si rende corrente la nuova directory test di sistema e la directory di versione <BLOCKQUOTE><CODE> <PRE> cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2 </PRE> </CODE></BLOCKQUOTE> e si corregge il file <CODE>specs</CODE> presente. In questo file, si cambia <CODE>/lib/ld-linux.so.1</CODE> a <CODE>/lib/ld-linux.so.2</CODE>. Inoltre è necessario anche eliminare tutte le espressioni <CODE>%{...:-lgmon}</CODE> nel file, dal momento che glibc non usa la libreria gmon per il profiling. Un esempio di file specs può essere trovato nella sezione <A HREF="Glibc2-HOWTO-9.html#specs">Esempio file specs</A>. <P> <H2><A NAME="ss4.4">4.4 Aggiornare i collegamenti per header file.</A> </H2> <P> <!-- glibc!test!header file, aggiornamento --> È necessario creare collegamenti nella nuova directory di link alle altre directory include: <BLOCKQUOTE><CODE> <PRE> 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 </PRE> </CODE></BLOCKQUOTE> Alcune librerie come ncurses necessitano di avere i propri file posti in questa directory. Si dovrà copiare o collegare i file in questione da <CODE>/usr/include</CODE>. (Probabilmente sarà necessario ricompilarne alcune con glibc2 per farle funzionare. In questi casi, basta compilare ed installare il pacchetto in <CODE>/usr/i486-linuxglibc2</CODE>.) <P> <H2><A NAME="ss4.5">4.5 Verificare la propria installazione.</A> </H2> <P> <!-- glibc!test --> <P>Per verificare l'installazione, si crei il seguente programma in un file glibc.c: <BLOCKQUOTE><CODE> <PRE> #include <stdio.h> main() { printf("hello world!\n"); } </PRE> </CODE></BLOCKQUOTE> 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": <BLOCKQUOTE><CODE> <PRE> % 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 </PRE> </CODE></BLOCKQUOTE> Si usi ldd per verificare che il programma è stato collegato con glibc2 e non la vecchia libc: <BLOCKQUOTE><CODE> <PRE> % 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) </PRE> </CODE></BLOCKQUOTE> Se compila, i collegamenti risultano e l'output del programma quando eseguito è "hello world!" l'installazione ha avuto successo. <P> <P> <P> <P> <HR> <A HREF="Glibc2-HOWTO-5.html">Avanti</A> <A HREF="Glibc2-HOWTO-3.html">Indietro</A> <A HREF="Glibc2-HOWTO.html#toc4">Indice</A> </BODY> </HTML>