Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 304

howto-html-it-9.1-0.5mdk.noarch.rpm

<!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&agrave; 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 &egrave;
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 &gt;= 2.7.2 (meglio 2.7.2.1)</LI>
<LI>binutils 2.8.1 (per alpha &egrave; 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, &egrave; necessaria circa
mezz'ora.
<P>
<H3>Estrarre i sorgenti.</H3>

<P>
<!--
glibc!test!sorgenti, estrarre
-->
<P>&Egrave; necessario estrarre i sorgenti dagli archivi cos&igrave; che si possano compilare.
Il modo migliore per farlo &egrave;:
<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&agrave; 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&agrave; fatto in questa directory, cosa
che semplificher&agrave; 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, &egrave;
necessario specificarli con --enable-add-ons, ad esempio
--enable-add-ons=linuxthreads,crypt,localedata.
&Egrave; anche necessario scegliere una directory di installazione.
/usr/i486-linuxglibc2 &egrave; una buona scelta.  Il comando per configure quindi
sar&agrave;:
<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 &egrave; la sola libreria la cui locazione &egrave; prefissata una volta che un
programma sia stato collegato e l'uso di un riferimento in <CODE>/lib</CODE>
faciliter&agrave; 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>.  &Egrave; necessario aggiungere un
percorso alla directory lib dove le nuove librerie risiedono, che sar&agrave;
<CODE>&lt;prefix&gt;/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 &egrave; aggiornare <CODE>/usr/lib/gcc-lib</CODE> in
modo che gcc sappia come usare le nuove librerie.  Per prima cosa &egrave; 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 &egrave; il sistema e 2.7.2.2 &egrave; la versione.
&Egrave; necessario copiare <CODE>/usr/lib/gcc-lib/&lt;system&gt;</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 &egrave;
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&ograve; 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
-->

&Egrave; 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&agrave; copiare o collegare i file in questione da 
<CODE>/usr/include</CODE>.  (Probabilmente sar&agrave; 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 &lt;stdio.h&gt;

 main()
 {
     printf("hello world!\n");
 }
</PRE>
</CODE></BLOCKQUOTE>

e si compili con l'opzione &quot;-b &lt;directory base&gt; -nostdinc
-I&lt;directory installazione&gt;/include -I/usr/lib/gcc-lib/&lt;nuova
directory di sistema&gt;/&lt;gcc version&gt;/include&quot;:
<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 &egrave; 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
&egrave; &quot;hello world!&quot; 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>