[ILDP-LFS] chapter 05 - toolchaintechnotes.xml
Sebastiano Gazzola
info a sebastianogazzola.it
Mer 20 Ott 2004 19:59:26 CEST
-------------- parte successiva --------------
--- originale/chapter05/toolchaintechnotes.xml 2004-06-17 14:08:30.250000000 +0200
+++ revisionata/chapter05/toolchaintechnotes.xml 2004-10-20 19:41:59.078125000 +0200
@@ -8,14 +8,14 @@
<?dbhtml filename="toolchaintechnotes.html"?>
<para>Questa sezione intende spiegare alcuni dettagli logici e tecnici dietro
-al metodo generale di costruzaione. Non è essenziale comprendere tutto ora.
-La maggior parte apparirà chiara dopo aver effettuato una vera costruzione.
+al metodo generale di compilazione. Non è essenziale comprendere tutto ora.
+La maggior parte apparirà chiara dopo aver effettuato una vera compilazione.
Si potrà poi ritornare qui liberamente in ogni istante.</para>
<para>L'obiettivo principale del <xref linkend="chapter-temporary-tools"/> è
mettere a disposizione un ambiente temporaneo integro, nel quale si possa effettuare
il chroot, e dal quale si possa produrre nel <xref linkend="chapter-building-system"/>
-una costruzione pulita e libera da problemi del sistema LFS finale. Lungo la strada,
+una compilazione pulita e libera da problemi del sistema LFS finale. Lungo la strada,
si cercherà di allontanarsi il più possibile dal sistema ospite, e, nel fare ciò,
di costruire una toolchain autocontenuta ed autoospitata. Occorre rimarcare che il
processo di costruzione è stato progettato in modo da minimizzare il rischio per i
@@ -37,7 +37,7 @@
indicato spesso come <emphasis>dynamic loader</emphasis>, che non va confuso con
il linker standard <emphasis>ld</emphasis>, il quale fa parte di Binutils. Il
linker dinamico è fornito con Glibc e ha il compito di trovare e caricare le
-librerie condivise necessarie ad un programma, preparando ilh progamma per l'esecuzione
+librerie condivise necessarie ad un programma, preparando il progamma per l'esecuzione
e poi lanciandolo. Nella maggior parte dei casi, il linker dinamico sarà
<emphasis>ld-linux.so.2</emphasis>. Su piattaforme meno diffuse il nome potrebbe
essere <emphasis>ld.so.1</emphasis>, mentre le nuove piattaforme a 64 bit potrebbero
@@ -56,34 +56,34 @@
<itemizedlist>
<listitem><para>Simile al principio del cross compiling, dove gli strumenti
installati con lo stesso prefisso lavorano in cooperazione utilizzando un po'
-di <quote>magia</quote> GNU..</para></listitem>
+di <quote>magia</quote> GNU.</para></listitem>
<listitem><para>Attenta manipolazione del percorso standard di ricerca delle
librerie da parte del linker, per assicurarsi che i programmi siano collegati
soltanto alle librerie desiderate.</para></listitem>
<listitem><para>Attenta manipolazione del file <emphasis>specs</emphasis> di
-<command>gcc</command>, per imporra al compilatore il linker dinamico da usare.</para></listitem>
+<command>gcc</command>, per imporre al compilatore il linker dinamico da usare.</para></listitem>
</itemizedlist>
<para>Binutils è installato per primo, perché sia GCC, sia Glibc eseguono
vari test sulle caratteristiche dell'assembler e del linker durante l'esecuzione dei
rispettivi <command>./configure</command>, per stabilire quali funzionalità del
software abilitare o disabilitare. Ciò è più importante di quanto si possa credere.
-Un GCC o un Glibc mal configurato puiò portare ad una toolchain interrotta in modo
-sottile, dove l'impatto di tale interruzione potrebbe non apparire fin quasi al
+Un GCC o un Glibc mal configurato può portare ad una toolchain interrotta in modo
+subdolo, dove l'impatto di tale interruzione potrebbe non apparire fin quasi al
completamento della costruzione di un'intera distribuzione. Fortunatamente, un
insuccesso delle test suite normalmente segnalerà la cosa prima che si sia sprecato
troppo tempo.</para>
-<para>Binitils installa i suoi assembler e linker in due directories:
+<para>Binutils installa i suoi assembler e linker in due directories:
<filename class="directory">/tools/bin</filename> e
<filename class="directory">/tools/$TARGET_TRIPLET/bin</filename>. In realtà,
gli strumenti in una directory sono collegati agli altri. Un aspetto importante del
linker è il suo ordine di ricerca delle librerie. È possibile ottenere informazioni
più dettagliate usando <command>ld</command> con l'opzione <emphasis>--verbose</emphasis>.
Per esempio, <command>ld --verbose | grep SEARCH</command> mostrerà i percorsi
-e la sequenza di ricerca in uso. E' possiile vedere quali file vengono effettivamente
+e la sequenza di ricerca in uso. È possibile vedere quali file vengono effettivamente
linkati da <command>ld</command> compilando un programma vuoto e passando l'opzione
<emphasis>--verbose</emphasis> al linker. Per esempio, il comando
<command>gcc dummy.c -Wl,--verbose 2>&1 | grep succeeded</command> mostrerà
@@ -102,22 +102,22 @@
<command>gcc</command> non sono necessariamente usati i medesimi percorsi. Si potrà
individuare il linker usato di norma da <command>gcc</command> eseguendo:
<command>gcc -print-prog-name=ld</command>.
-Informazioni dettagliate possono essere ottenutr da <command>gcc</command> passando
+Informazioni dettagliate possono essere ottenute da <command>gcc</command> passando
l'argomento <emphasis>-v</emphasis> nella compilazione di un programma vuoto. Per
esempio: <command>gcc -v dummy.c</command> mostrerà informazioni dettagliate sul
preprocessore e sulle fasi di compilazione e assemblaggio, compresi i percorsi
e l'ordine di ricerca degli include da parte di <command>gcc</command>.</para>
<para>Il terzo pacchetto installato è Glibc. Gli elementi di maggiore importanza
-per la costruzione di Glibc sono il compilatore, i binary tools e gli header del
+per la costruzione di Glibc sono il compilatore, i binary tool e gli header del
kernel. Generalmente, il compilatore non è un problema, dal momento che Glibc
userà sempre il <command>gcc</command> trovato in una delle directory in $PATH.
-I binary tools e gli headers del kernel potrebbero essere più complicati.
-Pertanto, senza prendere rischi, si useranno le opzioni di configurazione
+I binary tool e gli header del kernel potrebbero essere più complicati.
+Pertanto, senza correre rischi, si useranno le opzioni di configurazione
per imporre le scelte corrette. Dopo l'esecuzione di <command>./configure</command>
si potrà controllare il contenuto del file <filename>config.make</filename>
nella directory <filename class="directory">glibc-build</filename>
-glibc-build per i dettagli significativi. Si noteranno alcuni elementi
+per i dettagli significativi. Si noteranno alcuni elementi
importanti, come l'uso di <emphasis>CC="gcc -B/tools/bin/"</emphasis> per
determinare i binary tools da utilizzare, ed anche l'uso dei flag
<emphasis>-nostdinc</emphasis> e <emphasis>-isystem</emphasis> per controllare
@@ -126,18 +126,18 @@
autosufficiente per quanto riguarda il proprio meccanismo di costruzione e
generalmente non si affida ai default della toolchain.</para>
-<para>Dopo l'installazione di Glibc, verrà fatto qualche aggustamento per
+<para>Dopo l'installazione di Glibc, verrà fatto qualche aggiustamento per
assicurarsi che la ricerca ed il link vengano effettuati solo all'interno
-del prefisso <filename>/tools</filename>. Verrà instato un <command>ld</command>
+del prefisso <filename>/tools</filename>. Verrà installato un <command>ld</command>
ad hoc, che ha codificato un percorso di ricerca limitato a
<filename class="directory">/tools/lib</filename>. Poi si modificherà il file
specs di <command>gcc</command> perchè si indirizzi al nuovo linker dinamico
<filename class="directory">/tools/lib</filename>. Quest'ultimo passo è
<emphasis>vitale</emphasis> per l'intero processo. Come già scritto, il percorso
-predefinito del linker dinamico espressamente codificato in ogni eseguibile ELF
-condiviso. Esso può essere sipezionatp eseguendo:
+predefinito del linker dinamico è espressamente codificato in ogni eseguibile ELF
+condiviso. Esso può essere ispezionato eseguendo:
<command>readelf -l <name of binary> | grep interpreter</command>.
-Con la modifica il file specs di <command>gcc</command>, ci si assicura che ogni
+Con la modifica del file specs di <command>gcc</command>, ci si assicura che ogni
programma compilato da qui alla fine del capitolo utilizzi il nuovo linker dinamico
in <filename class="directory">/tools/lib</filename>.</para>
@@ -150,13 +150,13 @@
<para>Durante il secondo passaggio di Binutils, si potrà usare l'opzione di configure
<emphasis>--with-lib-path</emphasis> per regolare il percorso di ricerca delle librerie
-da parte <command>ld</command>. Da questo punto in avanti, la toolchain di base è
+da parte di <command>ld</command>. Da questo punto in avanti, la toolchain di base è
autocontenuta ed autoospitata. Gli altri pacchetti del
<xref linkend="chapter-temporary-tools"/> saranno costruiti con in nuovo Glibc
in <filename class="directory">/tools</filename>, e tutto andrà bene.</para>
<para>Nel passare all'ambiente chroot nel <xref linkend="chapter-building-system"/>,
-il primo paccetto importante installato sarà Glibc, per via della sua natura
+il primo pacchetto importante installato sarà Glibc, per via della sua natura
autosufficiente già menzionata. Una volta che installato questo Glibc
in <filename class="directory">/usr</filename> si effettuerà un rapido
cambiamento dei parametri di default della toolchain, per poi procedere alla
@@ -196,7 +196,7 @@
<para>Se il link dinamico offre tanti vantaggi, perche invece si effettua il
link statico dei primi due pacchetti del capitolo? Le ragioni sono di tre tipi:
storico, didattico e tecnico. Storico, perché le prime versioni di LFS
-effettuavano il link statico tutti i programmi di questo capitolo. Didattico,
+effettuavano il link statico in tutti i programmi di questo capitolo. Didattico,
perché è utile conoscere la differenza. Tecnica, perché in questo modo si guadagna
un fattore di indipendeza dal sistema ospite, il che significa che questi programmi
potranno essere usati indipendentemente da esso. Vale comunque la pena di segnalare
More information about the pluto-ildp-lfs
mailing list