Sophie

Sophie

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

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: Compilare con la libreria non primaria libc.</TITLE>
<LINK HREF="Glibc2-HOWTO-7.html" REL=next>
<LINK HREF="Glibc2-HOWTO-5.html" REL=previous>
<LINK HREF="Glibc2-HOWTO.html#toc6" REL=contents>
</HEAD>
<BODY>
<A HREF="Glibc2-HOWTO-7.html">Avanti</A>
<A HREF="Glibc2-HOWTO-5.html">Indietro</A>
<A HREF="Glibc2-HOWTO.html#toc6">Indice</A>
<HR>
<H2><A NAME="s6">6. Compilare con la libreria non primaria libc.</A></H2>

<P>
<!--
glibc!compilare con libreria alternativa
-->
<P>Ci sono situazioni in cui si desidera usare una libreria alternativa con
cui compilare i propri programmi.  Questa sezione spiega come raggiungere
questo scopo, usando le directory ed i nomi di installazione degli esempi
delle precedenti due sezioni.  Si ricordi di correggere i nomi secondo
la propria configurazione.
<P>
<H2><A NAME="ss6.1">6.1 Avviso per l'uso di libc non primarie.</A>
</H2>

<P>
<!--
glibc!compilare con librerie alternative!avviso
-->

Prima di compilare un programma che sar&agrave; usato nella fase di boot del
sistema, si ricordi che se il programma &egrave; collegato dinamicamente ed &egrave;
usato prima che le partizioni non root siano montate, tutte le librerie
collegate dovranno essere presenti nella partizione di root.  Seguendo il
percorso di installazione della precedente sezione su come installare glibc
come libreria primaria, la vecchia libreria &egrave; lasciata in <CODE>/lib</CODE>, 
che sar&agrave; nella propria partizione di root.  Questo significa che tutti i
programmi saranno in grado di funzionare durante la fase di boot.  Tuttavia
se <CODE>/usr</CODE> &egrave; su una diversa partizione e si installa glibc come
libreria di test in <CODE>/usr/i486-linuxglibc2</CODE>, qualsiasi nuovo
programma compilato con glibc non funzioner&agrave; fino a quando non si sia
montata <CODE>/usr</CODE>.
<P>
<H2><A NAME="ss6.2">6.2 Compilare programma con una glibc di test</A>
</H2>

<P>
<!--
glibc!compilare con librerie alternative!glibc
-->

Per compilare un programma con una installazione di prova di glibc, &egrave; 
necessario impostare i percorsi di include a quelli di glibc.  
Specificando &quot;-nostdinc&quot; si negheranno i normali percorsi, e
&quot;-I/usr/i486-linuxglibc2/include&quot; far&agrave; puntare agli include
di glibc.  Sar&agrave; anche necessario specificare gli include di gcc che
si trovano in <CODE>/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include</CODE>
(assumendo che si sia installata la libreria di test in i486-linuxglibc2 
con versione di gcc 2.7.2.2).
<P>Per collegare un programma con una libreria di prova glibc, &egrave; necessario
specificare la configurazione di gcc.  Questo si ottiene usando
l'opzione &quot;-b i486-linuxglibc2&quot;.
<P>Per la maggior parte dei programmi, si possono specificare queste nuove
opzioni aggiungendole alle opzioni di makefile <CODE>$CFLAGS</CODE> e
<CODE>$LDFLAGS</CODE>: 
<BLOCKQUOTE><CODE>
<PRE>
 CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include
-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -b i486-linuxglibc2
 LDFLAGS = -b i486-linuxglibc2
 
</PRE>
</CODE></BLOCKQUOTE>

Se si sta usando uno script di configurazione, si definiscano le variabili
d'ambiente <CODE>$CFLAGS</CODE> e <CODE>$LDFLAGS</CODE> (usando
env/setenv per csh/tcsh, o set/export per sh/bash/etc) prima di eseguire
configure.  I makefile generati in questo modo dovrebbero avere 
<CODE>$CFLAGS</CODE> e <CODE>$LDFLAGS</CODE> corretti.  Non tutti
i file di configurazione fanno riferimento a queste variabili, quindi 
&egrave; necessario controllare l'esecuzione di configure e correggere manualmente
i makefile se necessario.
<P>Se i programmi che si compilano eseguono solo gcc (e non direttamente cpp o 
binutils), si pu&ograve; usare lo script che segue per evitare di scrivere tutte
le opzioni:
<BLOCKQUOTE><CODE>
<PRE>
 #!/bin/bash
 /usr/bin/gcc -b i486-linuxglibc2 -nostdinc \
              -I/usr/i486-linuxglibc2/include \
              -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include "$@"
 
</PRE>
</CODE></BLOCKQUOTE>

Si pu&ograve; usare questo script invece di &quot;gcc&quot; per la compilazione.
<P>
<H2><A NAME="ss6.3">6.3 Compilare programmi con libc 5 quando glibc &egrave; la libreria primaria.</A>
</H2>

<P>
<!--
glibc!compilare con librerie alternative!libc 5
-->

Per compilare un programma con le vecchie librerie avendo installato glibc
come libreria primaria, &egrave; necessario impostare i percorsi di inclusione
ai vecchi include.  Specificando &quot;-nostdinc&quot; si nega
all'accesso al percorso normale, e
&quot;-I/usr/i486-linuxlibc5/include&quot; far&agrave; puntare agli include
di libc. Inoltre &egrave; necessario specificare
&quot;-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include&quot;
per accedere a specifici include gcc.  Si ricordi di correggere questi
percorsi sulla base dei nomi che si sono dati alle proprie directory e
versione di gcc.
<P>Per collegare un programma con la propria vecchia libc, &egrave; necessario
specificare la configurazione, ed &egrave; fatto con:
&quot;-b i486-linuxlibc5&quot;.
<P>Per la maggior parte dei programmi, si pu&ograve; specificare le nuove opzioni
aggiungedole alle opzioni di makefile <CODE>$CFLAGS</CODE> e
<CODE>$LDFLAGS</CODE>:
<BLOCKQUOTE><CODE>
<PRE>
 CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include
-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5
 LDFLAGS = -b i486-linuxlibc5
 
</PRE>
</CODE></BLOCKQUOTE>

Se si sta usando uno script di configurazione, si definiscano le variabili
d'ambiente <CODE>$CFLAGS</CODE> e <CODE>$LDFLAGS</CODE> (usando
env/setenv per csh/tcsh, o set/export per sh/bash/etc) prima di eseguire
configure.  I makefile generati in questo modo dovrebbero avere
<CODE>$CFLAGS</CODE> e <CODE>$LDFLAGS</CODE> corretti.  Non tutti
i file di configurazione fanno riferimento a queste variabili, quindi
&egrave; necessario controllare l'esecuzione di configure e correggere manualmente
i makefile se necessario.
<P>Se i programmi che si compilano eseguono solo gcc (e non direttamente cpp o
binutils), si pu&ograve; usare lo script che segue per evitare di scrivere tutte
le opzioni:
<BLOCKQUOTE><CODE>
<PRE>
 #!/bin/bash
 /usr/bin/gcc -b i486-linuxlibc5 -nostdinc \
              -I/usr/i486-linuxlibc5/include \
              -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include "$@"
 
</PRE>
</CODE></BLOCKQUOTE>

Si pu&ograve; usare questo script invece di &quot;gcc&quot; per la compilazione.
<P>
<P>
<HR>
<A HREF="Glibc2-HOWTO-7.html">Avanti</A>
<A HREF="Glibc2-HOWTO-5.html">Indietro</A>
<A HREF="Glibc2-HOWTO.html#toc6">Indice</A>
</BODY>
</HTML>