public inbox for gentoo-docs-it@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-docs-it] gcc-upgrading
@ 2005-12-13 20:19 Federico Della Ricca
  2005-12-13 23:35 ` Marco Mascherpa
  0 siblings, 1 reply; 5+ messages in thread
From: Federico Della Ricca @ 2005-12-13 20:19 UTC (permalink / raw
  To: gentoo-docs-it

[-- Attachment #1: Type: text/plain, Size: 1 bytes --]



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gcc-upgrading.xml --]
[-- Type: text/xml; name="gcc-upgrading.xml", Size: 12363 bytes --]

<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/gcc-upgrading.xml,v 1.2 2005/12/08 19:25:55 jkt Exp $ -->

<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<guide link="/doc/en/gcc-upgrading.xml">
<title>Guida all'aggiornamento di GCC per Gentoo Linux</title>

<author title="Author">
  <mail link="amne@gentoo.org">Wernfried Haas</mail>
</author>
<author title="Author">
  <mail link="jkt@gentoo.org">Jan Kundrát</mail>
</author>
<author title="Editor">
  <mail link="halcy0n@gentoo.org">Mark Loeser</mail>
</author>
<author title="Editor">
  <mail link="wolf31o2@gentoo.org">Chris Gianelloni</mail>
</author>
<author title="Traduzione">
  <mail link="richard77@libero.it">Federico Della Ricca</mail>
</author>


<abstract>
Questo documento guida gli utenti attraverso il processo di aggiornamento di GCC su sistemi Gentoo Linux.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>2</version>
<date>2005-12-08</date>

<chapter id="intro">
<title>Introduzione</title>
<section>
<title>Aggiornamento di GCC</title>
<body>

<p>
Benché il suo corretto funzionamento sia critico per il sistema, il compilatore GCC è un pacchetto come tutti gli altri, e necessita di essere aggiornato. Fra i motivi che possono richiedere l'aggiornamento di GCC vi sono: la correzione di bachi che possono interferire con il sistema, l'aggiunta di nuove funzionalità  o semplicemento il desiderio di mantenere aggiornato il proprio sistema. Se nessuna di queste motivazioni si applica al proprio caso, si può rimandare tranquillamente l'aggiornamento finché la propria versione di GCC gode del supporto da parte degli sviluppatori Gentoo.
</p>

<p>
Se si installa una versione aggiornata di GCC, il sistema non la userà automaticamente. Poiché potrebbero essere richiesti passaggi aggiuntivi, bisogna effettuare il passaggio esplicitamente. Se si decide di non passare alla nuova versione, Portage userà la vecchia finché non si cambia idea, o il vecchio compilatore non viene rimosso dal sistema.
</p>

<p>
Questa guida spiega i passi necessari per effettuare un aggiornamento sicuro del compilatore di un sistema Gentoo. Una sezione specifica è dedicata all'<uri link="#aggiornamento-da-3.3-a-3.4">aggiornamento dal GCC 3.3 alla versione 3.4</uri> e alle problematiche coinvolgenti <c>libstdc++</c>.
</p>

</body>
</section>
</chapter>

<chapter id="Aggiornamento-generico">
<title>Istruzioni per un aggiornamento generico</title>
<section>
<title>Introduzione</title>
<body>

<impo>
Se si cercano istruzioni specifiche per l'aggiornamento dal GCC 3.3 al GCC 3.4, si consulti la <uri link="#aggiornamento-da-3.3-a-3.4">sezione apposita</uri>.
</impo>

<p>
In generale, gli aggiornamenti <e>di manutenzione</e> (che eliminano bachi della precedente versione), come quello dalla versione 3.3.5 alla versione 3.3.6 dovrebbero poter essere fatti in tutta tranquillità, basta installare la nuova versione, impostare il sistema in modo che la utilizzi e ricompilare l'unico altro pacchetto coinvolto, <c>libtool</c>. A volte, gli aggiornamenti di GCC spezzano la compatibilità a livelli di codice binario, in tali casi la ricompilazione dei pacchetti coinvolti (o addirittura della <e>toolchain</e> [insieme dei programmi necessari per la compilazione dei pacchetti, NdT] o di tutti i pacchetti di base [il <e>system</e> NdT]) potrebbe rendersi necessaria.
</p>

<p>
La norma per cui il nuovo compilatore non viene utilizzato automaticamente ha una importante eccezione negli aggiornamenti di manutenzione, come quello fra le versioni 3.3.5 e 3.3.6, a meno di non utilizzare la <e>feature</e> "multislot", che permette di farli coesistere nello stesso sistema. Questa <e>feature</e> è normalmente disabilitata, in quanto la maggior parte degli utenti non ne avrebbe beneficio.
</p>

<pre caption="Aggiornamento di GCC">
# <i>emerge -uav gcc</i>

<comment>(Si ponga attenzione a sostituire "i686-pc-linux-gnu-3.4.4" con la versione del GCC a cui si è aggiornato e l'impostazione per CHOST del proprio sistema)</comment>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<p>
Ora si ricompili il sistema di base e i pacchetti appartenenti al profilo world per utilizzare il nuovo compilatore.
</p>

<pre caption="Ricompilazione del sistema">
# <i>emerge -eav system</i>
# <i>emerge -eav world</i>
</pre>

<p>
Ora è possibile rimuovere le vecchie versioni di GCC. Se lo si ritenesse opportuno, si esegua il comando seguente (sostituendo ovviamente a <c>=sys-devel/gcc-3.3*</c> la versione che si vuole rimuovere):
</p>

<pre caption="Rimozione delle vecchie versioni di GCC">
# <i>emerge -aC =sys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
</chapter>

<chapter id="aggiornamento-da-3.3-a-3.4">
<title>Aggiornamento da GCC-3.3 a 3.4</title>
<section>
<title>Introduzione</title>
<body>

<p>
L'aggiornamento dal GCC 3.3 al 3.4 presenta della problematiche particolari, in quanto l'ABI C++ è cambiata fra queste versioni, quindi bisogna porre particolare attenzione ai possibili problemi dati dalla libreria <c>libstdc++</c>.
</p>

</body>
</section>
<section id="modi-aggiornamento-da-3.3-a-3.4">
<title>Modalità dell'aggiornamento</title>
<body>

<p>
Ci sono due metodi per effettuare l'aggiornamento. Il <uri link="#aggiornamento-da-3.3-a-3.4-revdep-rebuild">primo metodo</uri> è più veloce e implica l'uso del programma <c>revdep-rebuild</c> contenuto nel pacchetto <c>gentoolkit</c> mentre il <uri link="#aggiornamento-da-3.3-a-3.4-emerge-e">secondo</uri> ricompila l'intero sistema da zero, sfruttando le nuove caratteristiche del GCC. Ogni utente può decidere per l'uno o l'altro metodo.
</p>

</body>
</section>
<section id="aggiornamento-da-3.3-a-3.4-revdep-rebuild">
<title>Utilizzo di revdep-rebuild</title>
<body>

<p>
Questo metodo richiede l'installazione di <c>gentoolkit</c> se non già presente nel sistema. Fatto ciò, si proceda all'aggiornamento del GCC e al passaggio al nuovo compilatore. Si ricompili anche il pacchetto <c>libtool</c> per assicurare la corretta funzionalità del sistema di compilazione.
</p>

<pre caption="Installazione di gentoolkit e aggiornamento del GCC">
# <i>emerge -an gentoolkit</i>
# <i>emerge -uav gcc</i>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<note>
Questo esempio suppone che si abbia impostato <c>CHOST="i686-pc-linux-gnu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config.
</note>

<p>
A questo punto si generi la lista dei pacchetti che revdep-rebuild prevede di ricompilare. Poi si usi revdep-rebuild per ricompilarli. Si presti attenzione al fatto che questa fase può richiedere diverso tempo.
</p>

<pre caption="Utilizzo di revdep-rebuild">
# <i>revdep-rebuild --library libstdc++.so.5 -- -p -v</i>
# <i>revdep-rebuild --library libstdc++.so.5</i>
</pre>

<note>
E' possibile che si verifichino dei problemi con delle versioni non esistenti di pacchetti, perché obsolete o mascherate. In questo caso si può usare <c>revdep-rebuild</c> con l'opzione <c>--package-names</c>, per far sì che i pacchetti siano ricompilati sulla base solo del nome del pacchetto, piuttosto che sulla combinazione esatta del nome del pacchetto e sua versione.
</note>

<p>
Per ottenere la compatibilità con applicazioni C++ binarie ed eventuali pacchetti che potrebbero non essere stati aggiornati da revdep-rebuild, bisogna installare <c>sys-libs/libstdc++-v3</c> prima di rimuovere GCC 3.3 dal sistema.
</p>

<pre caption="Installazione di libstdc++-v3 e rimozione di GCC 3.3">
# <i>emerge --oneshot sys-libs/libstdc++-v3</i>
# <i>emerge -aC =sys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
<section id="aggiornamento-da-3.3-a-3.4-emerge-e">
<title>Utilizzo di emerge -e</title>
<body>

<p>
Questo metodo, benché molto più lento, effettua la ricompilazione dell'intero sistema, per essere sicuri che tutti i pacchetti siano ricompilati con il nuovo compilatore, ed è perciò più sicuro. Per prima cosa, si aggiornino GCC e libtool e si effettui il passaggio al nuovo compilatore.
</p>

<pre caption="Aggiornamento di GCC">
# <i>emerge -uav gcc</i>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<note>
Questo esempio suppone che si abbia impostato <c>CHOST="i686-pc-linux-gnu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config.
</note>

<p>
Per ottenere la compatibilità con vecchie applicazioni C++ binarie, bisogna installare <c>sys-libs/libstdc++-v3</c>.
</p>

<pre caption="Installazione di libstdc++-v3">
# <i>emerge --oneshot sys-libs/libstdc++-v3</i>
</pre>

<p>
Ora si proceda a ricompilare per primo l'insieme di pacchetti (profilo) system, poi il profilo world. Questa fase richiede molto tempo, a seconda del numero di pacchetti installati, in quanto ricompila il sistema di base (toolchain) e poi tutti i pacchetti installati (compresa la toolchain). Questo è necessario per assicurarsi che tutti i pacchetti siano stati compilati la nuova toolchain, compresa la toolchain stessa.
</p>

<pre caption="Ricompilazione di system e world">
# <i>emerge -e system</i>
# <i>emerge -e world</i>
</pre>

<p>
Si possono anche rimuovere in sicurezza le vecchie versioni del GCC:
</p>

<pre caption="Rimuozione delle vecchie versioni del GCC">
# <i>emerge -aC =sys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
</chapter>

<chapter id="problemi-comuni">
<title>Problemi comuni</title>
<section>
<body>

<p>
Ci si assicuri di aver disabilitato <c>distcc</c> durante l'aggiornamento. Mescolare sui vari nodi versioni differenti del compilatore <e>causerà</e> problemi di ricompilazione. Non è necessario disabilitare <c>ccache</c>, in quanto la cache dei file oggetto sarà comunque ignorata, perché non più valida.
</p>

<p>
Si usi sempre la stessa versione di GCC per compilare il kernel e moduli aggiuntivi del kernel. Una volta ricompilato il  world con il nuovo GCC, i moduli esterni (come ad esempio <c>app-emulation/qemu-softmmu</c>) non potranno essere caricati. Ricompilare il kernel con il nuovo GCC risolve il problema.
</p>

</body>
</section>
<section>
<title>Messaggi di errore frequenti</title>
<body>

<p>
Se si verifica l'errore: <e>libtool: link: `/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/libstdc++.la' is not a valid libtool archive,</e> si esegua il comando <c>/sbin/fix_libtool_files.sh 3.3.6</c>. (eventualmente sostituire a "3.3.6" la versione riportata dal messaggio d'errore).
</p>

<p>
Se si verifica l'errore: <e>error: /usr/bin/gcc-config: line 632: /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory,</e> si provi a cancellare <c>/etc/env.d/gcc/config-i686-pc-linux-gnu</c> e si riesegua <c>gcc-config</c>, seguito da <c>source /etc/profile</c>. E' possibile farlo solo se non sono stati impostati dei compilatori per altri sistemi (cross-compilers).
</p>

<p>
Se un pacchetto non si compila durante l'esecuzione del comando emerge -e system/world, si può riprendere l'operazione con <c>emerge --resume</c> Se un pacchetto fallisce ripetutamente, si piò passare al successivo con <c>emerge --resume --skipfirst</c>. Non eseguire altre instanze di emerge nel frattempo o si perderanno le informazioni necessarie per poter riprendere la ricompilazione.
</p>

<p>
Se si verifica l'errore: <e>spec failure: unrecognized spec option</e> durante l'aggiornamento del compilatore, si provi  a ritornare al compilatore predefinito, azzerare il valore della variabile <c>GCC_SPECS</c> e aggiornare nuovamente il GCC:
</p>

<pre caption="Ripristino della configurazione predefinita">
# <i>gcc-config 1</i>
# <i>source /etc/profile</i>
# <i>unset GCC_SPECS</i>
# <i>emerge -uav gcc</i>
</pre>

</body>
</section>

</chapter>
</guide>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [gentoo-docs-it] gcc-upgrading
  2005-12-13 20:19 Federico Della Ricca
@ 2005-12-13 23:35 ` Marco Mascherpa
  0 siblings, 0 replies; 5+ messages in thread
From: Marco Mascherpa @ 2005-12-13 23:35 UTC (permalink / raw
  To: gentoo-docs-it

[-- Attachment #1: Type: text/plain, Size: 90 bytes --]

Online.

-- 
Marco Mascherpa

Gentoo Documentation Project
Italian Lead Translator

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [gentoo-docs-it] gcc-upgrading
@ 2005-12-15 18:53 Federico Della Ricca
  2005-12-19 23:07 ` Marco Mascherpa
  0 siblings, 1 reply; 5+ messages in thread
From: Federico Della Ricca @ 2005-12-15 18:53 UTC (permalink / raw
  To: gentoo-docs-it

[-- Attachment #1: Type: text/plain, Size: 59 bytes --]

Aggiornato alla versione 3. (tolto dalla lista un autore).

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gcc-upgrading.xml --]
[-- Type: text/xml; name="gcc-upgrading.xml", Size: 12267 bytes --]

<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/gcc-upgrading.xml,v 1.2 2005/12/08 19:25:55 jkt Exp $ -->

<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<guide link="/doc/en/gcc-upgrading.xml">
<title>Guida all'aggiornamento di GCC per Gentoo Linux</title>

<author title="Author">
  <mail link="amne@gentoo.org">Wernfried Haas</mail>
</author>
<author title="Author">
  <mail link="jkt@gentoo.org">Jan Kundrát</mail>
</author>
<author title="Editor">
  <mail link="halcy0n@gentoo.org">Mark Loeser</mail>
</author>
<author title="Traduzione">
  <mail link="richard77@libero.it">Federico Della Ricca</mail>
</author>


<abstract>
Questo documento guida gli utenti attraverso il processo di aggiornamento di GCC su sistemi Gentoo Linux.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>3</version>
<date>2005-12-08</date>

<chapter id="intro">
<title>Introduzione</title>
<section>
<title>Aggiornamento di GCC</title>
<body>

<p>
Benché il suo corretto funzionamento sia critico per il sistema, il compilatore GCC è un pacchetto come tutti gli altri, e necessita di essere aggiornato. Fra i motivi che possono richiedere l'aggiornamento di GCC vi sono: la correzione di bachi che possono interferire con il sistema, l'aggiunta di nuove funzionalità  o semplicemento il desiderio di mantenere aggiornato il proprio sistema. Se nessuna di queste motivazioni si applica al proprio caso, si può rimandare tranquillamente l'aggiornamento finché la propria versione di GCC gode del supporto da parte degli sviluppatori Gentoo.
</p>

<p>
Se si installa una versione aggiornata di GCC, il sistema non la userà automaticamente. Poiché potrebbero essere richiesti passaggi aggiuntivi, bisogna effettuare il passaggio esplicitamente. Se si decide di non passare alla nuova versione, Portage userà la vecchia finché non si cambia idea, o il vecchio compilatore non viene rimosso dal sistema.
</p>

<p>
Questa guida spiega i passi necessari per effettuare un aggiornamento sicuro del compilatore di un sistema Gentoo. Una sezione specifica è dedicata all'<uri link="#aggiornamento-da-3.3-a-3.4">aggiornamento dal GCC 3.3 alla versione 3.4</uri> e alle problematiche coinvolgenti <c>libstdc++</c>.
</p>

</body>
</section>
</chapter>

<chapter id="Aggiornamento-generico">
<title>Istruzioni per un aggiornamento generico</title>
<section>
<title>Introduzione</title>
<body>

<impo>
Se si cercano istruzioni specifiche per l'aggiornamento dal GCC 3.3 al GCC 3.4, si consulti la <uri link="#aggiornamento-da-3.3-a-3.4">sezione apposita</uri>.
</impo>

<p>
In generale, gli aggiornamenti <e>di manutenzione</e> (che eliminano bachi della precedente versione), come quello dalla versione 3.3.5 alla versione 3.3.6 dovrebbero poter essere fatti in tutta tranquillità, basta installare la nuova versione, impostare il sistema in modo che la utilizzi e ricompilare l'unico altro pacchetto coinvolto, <c>libtool</c>. A volte, gli aggiornamenti di GCC spezzano la compatibilità a livelli di codice binario, in tali casi la ricompilazione dei pacchetti coinvolti (o addirittura della <e>toolchain</e> [insieme dei programmi necessari per la compilazione dei pacchetti, NdT] o di tutti i pacchetti di base [il <e>system</e> NdT]) potrebbe rendersi necessaria.
</p>

<p>
La norma per cui il nuovo compilatore non viene utilizzato automaticamente ha una importante eccezione negli aggiornamenti di manutenzione, come quello fra le versioni 3.3.5 e 3.3.6, a meno di non utilizzare la <e>feature</e> "multislot", che permette di farli coesistere nello stesso sistema. Questa <e>feature</e> è normalmente disabilitata, in quanto la maggior parte degli utenti non ne avrebbe beneficio.
</p>

<pre caption="Aggiornamento di GCC">
# <i>emerge -uav gcc</i>

<comment>(Si ponga attenzione a sostituire "i686-pc-linux-gnu-3.4.4" con la versione del GCC a cui si è aggiornato e l'impostazione per CHOST del proprio sistema)</comment>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<p>
Ora si ricompili il sistema di base e i pacchetti appartenenti al profilo world per utilizzare il nuovo compilatore.
</p>

<pre caption="Ricompilazione del sistema">
# <i>emerge -eav system</i>
# <i>emerge -eav world</i>
</pre>

<p>
Ora è possibile rimuovere le vecchie versioni di GCC. Se lo si ritenesse opportuno, si esegua il comando seguente (sostituendo ovviamente a <c>=sys-devel/gcc-3.3*</c> la versione che si vuole rimuovere):
</p>

<pre caption="Rimozione delle vecchie versioni di GCC">
# <i>emerge -aC =sys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
</chapter>

<chapter id="aggiornamento-da-3.3-a-3.4">
<title>Aggiornamento da GCC-3.3 a 3.4</title>
<section>
<title>Introduzione</title>
<body>

<p>
L'aggiornamento dal GCC 3.3 al 3.4 presenta della problematiche particolari, in quanto l'ABI C++ è cambiata fra queste versioni, quindi bisogna porre particolare attenzione ai possibili problemi dati dalla libreria <c>libstdc++</c>.
</p>

</body>
</section>
<section id="modi-aggiornamento-da-3.3-a-3.4">
<title>Modalità dell'aggiornamento</title>
<body>

<p>
Ci sono due metodi per effettuare l'aggiornamento. Il <uri link="#aggiornamento-da-3.3-a-3.4-revdep-rebuild">primo metodo</uri> è più veloce e implica l'uso del programma <c>revdep-rebuild</c> contenuto nel pacchetto <c>gentoolkit</c> mentre il <uri link="#aggiornamento-da-3.3-a-3.4-emerge-e">secondo</uri> ricompila l'intero sistema da zero, sfruttando le nuove caratteristiche del GCC. Ogni utente può decidere per l'uno o l'altro metodo.
</p>

</body>
</section>
<section id="aggiornamento-da-3.3-a-3.4-revdep-rebuild">
<title>Utilizzo di revdep-rebuild</title>
<body>

<p>
Questo metodo richiede l'installazione di <c>gentoolkit</c> se non già presente nel sistema. Fatto ciò, si proceda all'aggiornamento del GCC e al passaggio al nuovo compilatore. Si ricompili anche il pacchetto <c>libtool</c> per assicurare la corretta funzionalità del sistema di compilazione.
</p>

<pre caption="Installazione di gentoolkit e aggiornamento del GCC">
# <i>emerge -an gentoolkit</i>
# <i>emerge -uav gcc</i>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<note>
Questo esempio suppone che si abbia impostato <c>CHOST="i686-pc-linux-gnu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config.
</note>

<p>
A questo punto si generi la lista dei pacchetti che revdep-rebuild prevede di ricompilare. Poi si usi revdep-rebuild per ricompilarli. Si presti attenzione al fatto che questa fase può richiedere diverso tempo.
</p>

<pre caption="Utilizzo di revdep-rebuild">
# <i>revdep-rebuild --library libstdc++.so.5 -- -p -v</i>
# <i>revdep-rebuild --library libstdc++.so.5</i>
</pre>

<note>
E' possibile che si verifichino dei problemi con delle versioni non esistenti di pacchetti, perché obsolete o mascherate. In questo caso si può usare <c>revdep-rebuild</c> con l'opzione <c>--package-names</c>, per far sì che i pacchetti siano ricompilati sulla base solo del nome del pacchetto, piuttosto che sulla combinazione esatta del nome del pacchetto e sua versione.
</note>

<p>
Per ottenere la compatibilità con applicazioni C++ binarie ed eventuali pacchetti che potrebbero non essere stati aggiornati da revdep-rebuild, bisogna installare <c>sys-libs/libstdc++-v3</c> prima di rimuovere GCC 3.3 dal sistema.
</p>

<pre caption="Installazione di libstdc++-v3 e rimozione di GCC 3.3">
# <i>emerge --oneshot sys-libs/libstdc++-v3</i>
# <i>emerge -aC =sys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
<section id="aggiornamento-da-3.3-a-3.4-emerge-e">
<title>Utilizzo di emerge -e</title>
<body>

<p>
Questo metodo, benché molto più lento, effettua la ricompilazione dell'intero sistema, per essere sicuri che tutti i pacchetti siano ricompilati con il nuovo compilatore, ed è perciò più sicuro. Per prima cosa, si aggiornino GCC e libtool e si effettui il passaggio al nuovo compilatore.
</p>

<pre caption="Aggiornamento di GCC">
# <i>emerge -uav gcc</i>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<note>
Questo esempio suppone che si abbia impostato <c>CHOST="i686-pc-linux-gnu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config.
</note>

<p>
Per ottenere la compatibilità con vecchie applicazioni C++ binarie, bisogna installare <c>sys-libs/libstdc++-v3</c>.
</p>

<pre caption="Installazione di libstdc++-v3">
# <i>emerge --oneshot sys-libs/libstdc++-v3</i>
</pre>

<p>
Ora si proceda a ricompilare per primo l'insieme di pacchetti (profilo) system, poi il profilo world. Questa fase richiede molto tempo, a seconda del numero di pacchetti installati, in quanto ricompila il sistema di base (toolchain) e poi tutti i pacchetti installati (compresa la toolchain). Questo è necessario per assicurarsi che tutti i pacchetti siano stati compilati la nuova toolchain, compresa la toolchain stessa.
</p>

<pre caption="Ricompilazione di system e world">
# <i>emerge -e system</i>
# <i>emerge -e world</i>
</pre>

<p>
Si possono anche rimuovere in sicurezza le vecchie versioni del GCC:
</p>

<pre caption="Rimuozione delle vecchie versioni del GCC">
# <i>emerge -aC =sys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
</chapter>

<chapter id="problemi-comuni">
<title>Problemi comuni</title>
<section>
<body>

<p>
Ci si assicuri di aver disabilitato <c>distcc</c> durante l'aggiornamento. Mescolare sui vari nodi versioni differenti del compilatore <e>causerà</e> problemi di ricompilazione. Non è necessario disabilitare <c>ccache</c>, in quanto la cache dei file oggetto sarà comunque ignorata, perché non più valida.
</p>

<p>
Si usi sempre la stessa versione di GCC per compilare il kernel e moduli aggiuntivi del kernel. Una volta ricompilato il  world con il nuovo GCC, i moduli esterni (come ad esempio <c>app-emulation/qemu-softmmu</c>) non potranno essere caricati. Ricompilare il kernel con il nuovo GCC risolve il problema.
</p>

</body>
</section>
<section>
<title>Messaggi di errore frequenti</title>
<body>

<p>
Se si verifica l'errore: <e>libtool: link: `/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/libstdc++.la' is not a valid libtool archive,</e> si esegua il comando <c>/sbin/fix_libtool_files.sh 3.3.6</c>. (eventualmente sostituire a "3.3.6" la versione riportata dal messaggio d'errore).
</p>

<p>
Se si verifica l'errore: <e>error: /usr/bin/gcc-config: line 632: /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory,</e> si provi a cancellare <c>/etc/env.d/gcc/config-i686-pc-linux-gnu</c> e si riesegua <c>gcc-config</c>, seguito da <c>source /etc/profile</c>. E' possibile farlo solo se non sono stati impostati dei compilatori per altri sistemi (cross-compilers).
</p>

<p>
Se un pacchetto non si compila durante l'esecuzione del comando emerge -e system/world, si può riprendere l'operazione con <c>emerge --resume</c> Se un pacchetto fallisce ripetutamente, si piò passare al successivo con <c>emerge --resume --skipfirst</c>. Non eseguire altre instanze di emerge nel frattempo o si perderanno le informazioni necessarie per poter riprendere la ricompilazione.
</p>

<p>
Se si verifica l'errore: <e>spec failure: unrecognized spec option</e> durante l'aggiornamento del compilatore, si provi  a ritornare al compilatore predefinito, azzerare il valore della variabile <c>GCC_SPECS</c> e aggiornare nuovamente il GCC:
</p>

<pre caption="Ripristino della configurazione predefinita">
# <i>gcc-config 1</i>
# <i>source /etc/profile</i>
# <i>unset GCC_SPECS</i>
# <i>emerge -uav gcc</i>
</pre>

</body>
</section>

</chapter>
</guide>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [gentoo-docs-it] gcc-upgrading
  2005-12-15 18:53 [gentoo-docs-it] gcc-upgrading Federico Della Ricca
@ 2005-12-19 23:07 ` Marco Mascherpa
  0 siblings, 0 replies; 5+ messages in thread
From: Marco Mascherpa @ 2005-12-19 23:07 UTC (permalink / raw
  To: gentoo-docs-it

[-- Attachment #1: Type: text/plain, Size: 219 bytes --]

On Thursday 15 December 2005 19:53, Federico Della Ricca wrote:
> Aggiornato alla versione 3. (tolto dalla lista un autore).

Online.

-- 
Marco Mascherpa

Gentoo Documentation Project
Italian Lead Translator

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [gentoo-docs-it] gcc-upgrading
@ 2006-05-30  8:46 Enrico Morelli
  0 siblings, 0 replies; 5+ messages in thread
From: Enrico Morelli @ 2006-05-30  8:46 UTC (permalink / raw
  To: gentoo-docs-it


Dall'ultima GWN sembra indispensabile aggiornare al più presto la guida
in oggetto che è ferma a marzo, visti i problemi che si possono
incrontrare avendo installate ed utilizzando le versioni 3.4 e 4.1 di
GCC.
-- 
-------------------------------------------------------------------
       (o_
(o_    //\  Coltivate Linux che tanto Windows si pianta da solo.
(/)_   V_/_
+------------------------------------------------------------------+
|     ENRICO MORELLI         |  email: morelli@CERM.UNIFI.IT       |
| *     *       *       *    |  phone: +39 055 4574269             |
|  University of Florence    |  fax  : +39 055 4574253             |
|  CERM - via Sacconi, 6 -  50019 Sesto Fiorentino (FI) - ITALY    |
+------------------------------------------------------------------+

-- 
gentoo-docs-it@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-05-30  8:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-15 18:53 [gentoo-docs-it] gcc-upgrading Federico Della Ricca
2005-12-19 23:07 ` Marco Mascherpa
  -- strict thread matches above, loose matches on Subject: below --
2006-05-30  8:46 Enrico Morelli
2005-12-13 20:19 Federico Della Ricca
2005-12-13 23:35 ` Marco Mascherpa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox