Sophie

Sophie

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

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: Installazione come libreria C primaria</TITLE>
<LINK HREF="Glibc2-HOWTO-6.html" REL=next>
<LINK HREF="Glibc2-HOWTO-4.html" REL=previous>
<LINK HREF="Glibc2-HOWTO.html#toc5" REL=contents>
</HEAD>
<BODY>
<A HREF="Glibc2-HOWTO-6.html">Avanti</A>
<A HREF="Glibc2-HOWTO-4.html">Indietro</A>
<A HREF="Glibc2-HOWTO.html#toc5">Indice</A>
<HR>
<H2><A NAME="installazione primaria"></A> <A NAME="s5">5. Installazione come libreria C primaria</A></H2>

<P>
<!--
glibc!installazione
-->
<P>Questa sezione descrive l'installazione di glibc 2 come libreria primaria.
Qualsiasi nuovo programma compilato sar&agrave; collegato con questa libreria, a meno
che non si usino particolari opzioni per qualche altra versione.
<P>Se si dispone di una distribuzione Redhat o Debian, dopo aver prelevato i
file rpm o deb appropriati, consultare le istruzioni per l'installazione. In
questo caso si pu&ograve; saltare la sezione che segue.
<P>
<P>
<H2><A NAME="compiling"></A> <A NAME="ss5.1">5.1 Compilare la libreria dai sorgenti.</A>
</H2>

<P>
<!--
glibc!installazione!compilazione
-->
<P>Questa sezione spiega come compilare glibc 2 e le aggiunte a partire dai
sorgenti. &Egrave; necessario compilare la libreria se si desidera cambiare
opzioni di ottimizzazione o configurazione o usare un pacchetto di cui non
si dispongano i binari.
<P>
<H3>Prerequisiti.</H3>

<P>
<!--
glibc!installazione!prerequisiti
-->
<P>
<UL>
<LI>Circa 150 MB di spazio libero su disco</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 a ? )</LI>
<LI>bash 2.0</LI>
<LI>autoconf 2.12 (se si modifica 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
completamente librerie e aggiunte. Su un i686@200 "carico", &egrave; necessaria
circa mezzora.
<P>
<H3>Estrarre i sorgenti.</H3>

<P>
<!--
glibc!installazione!sorgenti, estrarre
-->
<P>&Egrave; necessario estrarre i sorgenti dagli archivi in modo da poterli 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>

Questa sequenza di comandi dispone le directory linuxthreads, crypt, e 
localedata in glibc-2.0.6 dove &egrave; possibile configurare queste aggiunte.
<P>
<H3>Configurazione.</H3>

<P>
<!--
glibc!installazione!configurazione
-->
<P>Si crei una directory di nome compile in <CODE>glibc-2.0.6</CODE>, e la si
renda directory 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 esegua <CODE>../configure</CODE>.  Per usare i pacchetti aggiuntivi, &egrave;
necessario specificarli con  --enable-add-ons, come in
--enable-add-ons=linuxthreads,crypt,localedata.
Probabilmente si desiderer&agrave; anche specificare i percorsi dove debbano essere
installati. Per adeguarsi alle distribuzioni standard di Linux, si specifichi
--prefix=/usr.  (Quando un prefisso di <CODE>/usr</CODE> &egrave; specificato su un
sistema linux, configure sa come sistemare i percorsi rimanenti per disporre
libc.so e le altre librerie importanti in <CODE>/lib</CODE>.)  La linea completa
di configurazione dovrebbe essere:
<BLOCKQUOTE><CODE>
<PRE>
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H3>Compilazione.</H3>

<P>
<!--
glibc!installazione!compilazione
-->
<P>Per compilare e verificare, si esegua:
<BLOCKQUOTE><CODE>
<PRE>
 make
 make check
 
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>
<H2><A NAME="ss5.2">5.2 Prepararsi per l'installazione.</A>
</H2>

<P>
<!--
glibc!installazione!prepararsi per
-->
<P>Ora &egrave; necessario spostare alcuni file per prepararsi per la nuova libreria,
a seconda che si stia installando dai sorgenti o dai binari.  Ogni nuovo
programma compilato sar&agrave; collegato alla glibc, ma programmi vecchi che non sono
collegati staticamente dipenderanno ancora dal libc 5, per questo non &egrave; 
possibile semplicemente sovrascrivere la vecchia versione.
<P>
<OL>
<LI>Creare una nuova directory per contenere i vecchi file:
 
<BLOCKQUOTE><CODE>
<PRE>
  mkdir -p /usr/i486-linuxlibc5/lib
  
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>I vecchi file di header devono essere rimosssi da <CODE>/usr/include</CODE>:
<BLOCKQUOTE><CODE>
<PRE>
 mv /usr/include /usr/i486-linuxlibc5/include
 
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Creare una nuova directory per i file include ed assegnare i
collegamenti per includere altre directory:
<BLOCKQUOTE><CODE>
<PRE>
 mkdir /usr/include

 ln -s /usr/src/linux/include/linux /usr/include/linux
 ln -s /usr/src/linux/include/asm /usr/include/asm
 ln -s /usr/X11R6/include/X11 /usr/include/X11
 ln -s /usr/lib/g++-include /usr/include/g++
 
</PRE>
</CODE></BLOCKQUOTE>


I collegamenti potrebbero essere diversi a seconda della distribuzione
di cui si dispone.  Ad esempio Slackware pone gli header g++ in
<CODE>/usr/local/g++-include</CODE>, mentre Debian in
<CODE>/usr/include/g++</CODE>, e collega <CODE>/usr/lib/g++-include</CODE> a
<CODE>/usr/include/g++</CODE>.  Nell'ultimo caso, probabilmente si
desiderer&agrave; spostare la directory originale di nuovo in
<CODE>/usr/include</CODE>.
</LI>
<LI>Ripristinare ogni file di header o collegamento extra.  Alcune
librerie non standard come ncurses pongono i propri file in
<CODE>/usr/include</CODE> oppure creano un link alla loro directory di
include in <CODE>/usr/include</CODE>.  &Egrave; necessario ripristinare questi
file e collegamenti al fine di poter usare correttamente le librerie
extra.
</LI>
<LI>Aggiungere la nuova directory della libreria (ad esempio
<CODE>/usr/i486-linuxlibc5/lib</CODE>) <EM>all'inizio</EM> del proprio
file <CODE>/etc/ld.so.conf</CODE>.  &Egrave; necessario avere ld.so 1.8.8 
(o pi&ugrave; recente) per evitare alcuni strani messaggi una volta che glibc sia
installata.
</LI>
<LI>Spostare/copiare tutte le librerie C vecchie nella nuova directory.
<BLOCKQUOTE><CODE>
<PRE>
 mv /usr/lib/libbsd.a /usr/i486-linuxlibc5/lib
 mv /usr/lib/libc.a /usr/i486-linuxlibc5/lib
 mv /usr/lib/libgmon.a /usr/i486-linuxlibc5/lib
 mv /usr/lib/libm.a /usr/i486-linuxlibc5/lib
 mv /usr/lib/libmcheck.a /usr/i486-linuxlibc5/lib
 mv /usr/lib/libc.so /usr/i486-linuxlibc5/lib
 mv /usr/lib/libm.so /usr/i486-linuxlibc5/lib
 cp /lib/libm.so.5.* /usr/i486-linuxlibc5/lib
 cp /lib/libc.so.5.* /usr/i486-linuxlibc5/lib
 
</PRE>
</CODE></BLOCKQUOTE>

<CODE>libm.so.5</CODE> e <CODE>libc.so.5</CODE> dovrebbero essere copiate e
non spostate se <CODE>/usr</CODE> &egrave; una partizione separata da <CODE>/</CODE>, in
quanto sono necessarie per i programmi usati per far partire linux e
devono risiedere nella partizione di root.
</LI>
<LI>Spostare i file <CODE>/usr/lib/*.o</CODE> nella nuova directory.
<BLOCKQUOTE><CODE>
<PRE>
 mv /usr/lib/crt1.o /usr/i486-linuxlibc5/lib
 mv /usr/lib/crti.o /usr/i486-linuxlibc5/lib
 mv /usr/lib/crtn.o /usr/i486-linuxlibc5/lib
 mv /usr/lib/gcrt1.o /usr/i486-linuxlibc5/lib
 
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Aggiornare la propria cache dopo lo spostamento delle librerie
<BLOCKQUOTE><CODE>
<PRE>
 ldconfig -v
 
</PRE>
</CODE></BLOCKQUOTE>
</LI>
</OL>
<P>
<P>
<H2><A NAME="ss5.3">5.3 Installare dal pacchetto binario.</A>
</H2>

<P>
<!--
glibc!installazione!codice precompilato
-->
<P>Se si sta installando glibc da codice binario precompilato, si deve:
<BLOCKQUOTE><CODE>
<PRE>
 cd /
 gzip -dc glibc-2.0.bin.i386.tar.gz | tar tvvf -
 gzip -dc glibc-crypt-2.0.bin.i386.tar.gz | tar tvvf -
 ldconfig -v
 
</PRE>
</CODE></BLOCKQUOTE>

Con differenti archittetura o versione, sostituire i nomi di file adeguati.
<P>
<P>
<H2><A NAME="ss5.4">5.4 Installare dai sorgenti.</A>
</H2>

<P>
<!--
glibc!installazione!dai sorgenti
-->
<P>Per installare la libreria dai sorgenti, si esegua:
<BLOCKQUOTE><CODE>
<PRE>
 make install
 ldconfig -v
 
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>
<H2><A NAME="ss5.5">5.5 Aggiornare i file specs di gcc.</A>
</H2>

<P>
<!--
glibc!installazione!gcc file specs, aggiornamento
-->
<P>Il passo finale dell'installazione (sia nel caso di codice binario che
sorgente) &egrave; di aggionrare il file <CODE>specs</CODE> di gcc, in modo da
poter collegare correttamente i propri programmi. Per determinare quale
file specs sia quello usato da gcc, si usi:
<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>
<P>In questo caso i486-unknown-linux &egrave; il sistema, e 2.7.2.2 la versione.
&Egrave; necessario copiare il file <CODE>/usr/lib/gcc-lib/&lt;system&gt;</CODE>
nella vecchia directory di sistema
<BLOCKQUOTE><CODE>
<PRE>
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxlibc5
 
</PRE>
</CODE></BLOCKQUOTE>
<P>Andare nella directory originale e quella di versione
<BLOCKQUOTE><CODE>
<PRE>
 cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2
 
</PRE>
</CODE></BLOCKQUOTE>
<P>per modificare il file <CODE>specs</CODE> presente in questa directory.  Nel
file, si cambi <CODE>/lib/ld-linux.so.1</CODE> in <CODE>/lib/ld-linux.so.2</CODE>.  
Inoltre &egrave; necessario rimuovere tutte le espressioni <CODE>%{...:-lgmon}</CODE> 
presenti 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 di file specs</A>.
<P>
<P>
<H2><A NAME="ss5.6">5.6 Controllare la propria installazione.</A>
</H2>

<P>
<!--
glibc!installazione!controllare
-->
<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 il programma.
<BLOCKQUOTE><CODE>
<PRE>
 % gcc glibc.c -o glibc
 
</PRE>
</CODE></BLOCKQUOTE>

Usando ldd &egrave; possibile verificare che il programma &egrave; stato collegato con
glibc2 e non la vecchia libc:
<BLOCKQUOTE><CODE>
<PRE>
 % ldd glibc
 libc.so.6 => /lib/libc.so.6 (0x4000e000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
 
</PRE>
</CODE></BLOCKQUOTE>

Se il programma si compila e genera &quot;hello world!&quot; quando
eseguito, l'installazione &egrave; corretta.
<P>
<HR>
<A HREF="Glibc2-HOWTO-6.html">Avanti</A>
<A HREF="Glibc2-HOWTO-4.html">Indietro</A>
<A HREF="Glibc2-HOWTO.html#toc5">Indice</A>
</BODY>
</HTML>