From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lists.gentoo.org ([140.105.134.102] helo=robin.gentoo.org) by nuthatch.gentoo.org with esmtp (Exim 4.54) id 1EmGXj-0006yB-J7 for garchives@archives.gentoo.org; Tue, 13 Dec 2005 20:14:36 +0000 Received: from robin.gentoo.org (localhost [127.0.0.1]) by robin.gentoo.org (8.13.5/8.13.5) with SMTP id jBDKEFKY012696; Tue, 13 Dec 2005 20:14:15 GMT Received: from vsmtp1alice.tin.it (vsmtp1alice.tin.it [212.216.176.144]) by robin.gentoo.org (8.13.5/8.13.5) with ESMTP id jBDKEFvF008041 for <gentoo-docs-it@lists.gentoo.org>; Tue, 13 Dec 2005 20:14:15 GMT Received: from [82.51.130.161] (82.51.130.161) by vsmtp1alice.tin.it (7.2.060.1) id 439DB3950003932E for gentoo-docs-it@lists.gentoo.org; Tue, 13 Dec 2005 21:14:32 +0100 Message-ID: <439F2CD1.10909@libero.it> Date: Tue, 13 Dec 2005 21:19:29 +0100 From: Federico Della Ricca <richard77@libero.it> User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051208) X-Accept-Language: en-us, en Precedence: bulk List-Post: <mailto:gentoo-docs-it@lists.gentoo.org> List-Help: <mailto:gentoo-docs-it+help@gentoo.org> List-Unsubscribe: <mailto:gentoo-docs-it+unsubscribe@gentoo.org> List-Subscribe: <mailto:gentoo-docs-it+subscribe@gentoo.org> List-Id: Gentoo Linux mail <gentoo-docs-it.gentoo.org> X-BeenThere: gentoo-docs-it@gentoo.org Reply-to: gentoo-docs-it@lists.gentoo.org MIME-Version: 1.0 To: gentoo-docs-it@lists.gentoo.org Subject: [gentoo-docs-it] gcc-upgrading Content-Type: multipart/mixed; boundary="------------080803010001080003080807" X-Archives-Salt: 9987a9f2-f1a8-481d-9559-8b3860b20ad0 X-Archives-Hash: 33c799cddc339c4dd6b4f0da1c33e187 This is a multi-part message in MIME format. --------------080803010001080003080807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit --------------080803010001080003080807 Content-Type: text/xml; name="gcc-upgrading.xml" Content-Disposition: inline; filename="gcc-upgrading.xml" Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by robin.gentoo.org id jBDKEFKg012696 <?xml version=3D'1.0' encoding=3D"UTF-8"?> <!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/gc= c-upgrading.xml,v 1.2 2005/12/08 19:25:55 jkt Exp $ --> <!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> <guide link=3D"/doc/en/gcc-upgrading.xml"> <title>Guida all'aggiornamento di GCC per Gentoo Linux</title> <author title=3D"Author"> <mail link=3D"amne@gentoo.org">Wernfried Haas</mail> </author> <author title=3D"Author"> <mail link=3D"jkt@gentoo.org">Jan Kundr=C3=A1t</mail> </author> <author title=3D"Editor"> <mail link=3D"halcy0n@gentoo.org">Mark Loeser</mail> </author> <author title=3D"Editor"> <mail link=3D"wolf31o2@gentoo.org">Chris Gianelloni</mail> </author> <author title=3D"Traduzione"> <mail link=3D"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=3D"intro"> <title>Introduzione</title> <section> <title>Aggiornamento di GCC</title> <body> <p> Bench=C3=A9 il suo corretto funzionamento sia critico per il sistema, il = compilatore GCC =C3=A8 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 siste= ma, l'aggiunta di nuove funzionalit=C3=A0 o semplicemento il desiderio d= i mantenere aggiornato il proprio sistema. Se nessuna di queste motivazio= ni si applica al proprio caso, si pu=C3=B2 rimandare tranquillamente l'ag= giornamento finch=C3=A9 la propria versione di GCC gode del supporto da p= arte degli sviluppatori Gentoo. </p> <p> Se si installa una versione aggiornata di GCC, il sistema non la user=C3=A0= automaticamente. Poich=C3=A9 potrebbero essere richiesti passaggi aggiun= tivi, bisogna effettuare il passaggio esplicitamente. Se si decide di non= passare alla nuova versione, Portage user=C3=A0 la vecchia finch=C3=A9 n= on si cambia idea, o il vecchio compilatore non viene rimosso dal sistema. </p> <p> Questa guida spiega i passi necessari per effettuare un aggiornamento sic= uro del compilatore di un sistema Gentoo. Una sezione specifica =C3=A8 de= dicata all'<uri link=3D"#aggiornamento-da-3.3-a-3.4">aggiornamento dal GC= C 3.3 alla versione 3.4</uri> e alle problematiche coinvolgenti <c>libstd= c++</c>. </p> </body> </section> </chapter> <chapter id=3D"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 GC= C 3.4, si consulti la <uri link=3D"#aggiornamento-da-3.3-a-3.4">sezione a= pposita</uri>. </impo> <p> In generale, gli aggiornamenti <e>di manutenzione</e> (che eliminano bach= i della precedente versione), come quello dalla versione 3.3.5 alla versi= one 3.3.6 dovrebbero poter essere fatti in tutta tranquillit=C3=A0, basta= installare la nuova versione, impostare il sistema in modo che la utiliz= zi e ricompilare l'unico altro pacchetto coinvolto, <c>libtool</c>. A vol= te, gli aggiornamenti di GCC spezzano la compatibilit=C3=A0 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 automaticament= e ha una importante eccezione negli aggiornamenti di manutenzione, come q= uello fra le versioni 3.3.5 e 3.3.6, a meno di non utilizzare la <e>featu= re</e> "multislot", che permette di farli coesistere nello stesso sistema= . Questa <e>feature</e> =C3=A8 normalmente disabilitata, in quanto la mag= gior parte degli utenti non ne avrebbe beneficio. </p> <pre caption=3D"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 =C3=A8 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=3D"Ricompilazione del sistema"> # <i>emerge -eav system</i> # <i>emerge -eav world</i> </pre> <p> Ora =C3=A8 possibile rimuovere le vecchie versioni di GCC. Se lo si riten= esse opportuno, si esegua il comando seguente (sostituendo ovviamente a <= c>=3Dsys-devel/gcc-3.3*</c> la versione che si vuole rimuovere): </p> <pre caption=3D"Rimozione delle vecchie versioni di GCC"> # <i>emerge -aC =3Dsys-devel/gcc-3.3*</i> </pre> </body> </section> </chapter> <chapter id=3D"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 particola= ri, in quanto l'ABI C++ =C3=A8 cambiata fra queste versioni, quindi bisog= na porre particolare attenzione ai possibili problemi dati dalla libreria= <c>libstdc++</c>. </p> </body> </section> <section id=3D"modi-aggiornamento-da-3.3-a-3.4"> <title>Modalit=C3=A0 dell'aggiornamento</title> <body> <p> Ci sono due metodi per effettuare l'aggiornamento. Il <uri link=3D"#aggio= rnamento-da-3.3-a-3.4-revdep-rebuild">primo metodo</uri> =C3=A8 pi=C3=B9 = veloce e implica l'uso del programma <c>revdep-rebuild</c> contenuto nel = pacchetto <c>gentoolkit</c> mentre il <uri link=3D"#aggiornamento-da-3.3-= a-3.4-emerge-e">secondo</uri> ricompila l'intero sistema da zero, sfrutta= ndo le nuove caratteristiche del GCC. Ogni utente pu=C3=B2 decidere per l= 'uno o l'altro metodo. </p> </body> </section> <section id=3D"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=C3=A0= presente nel sistema. Fatto ci=C3=B2, si proceda all'aggiornamento del G= CC e al passaggio al nuovo compilatore. Si ricompili anche il pacchetto <= c>libtool</c> per assicurare la corretta funzionalit=C3=A0 del sistema di= compilazione. </p> <pre caption=3D"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=3D"i686-pc-linux-g= nu"</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 preved= e di ricompilare. Poi si usi revdep-rebuild per ricompilarli. Si presti a= ttenzione al fatto che questa fase pu=C3=B2 richiedere diverso tempo. </p> <pre caption=3D"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 esist= enti di pacchetti, perch=C3=A9 obsolete o mascherate. In questo caso si p= u=C3=B2 usare <c>revdep-rebuild</c> con l'opzione <c>--package-names</c>,= per far s=C3=AC che i pacchetti siano ricompilati sulla base solo del no= me del pacchetto, piuttosto che sulla combinazione esatta del nome del pa= cchetto e sua versione. </note> <p> Per ottenere la compatibilit=C3=A0 con applicazioni C++ binarie ed eventu= ali pacchetti che potrebbero non essere stati aggiornati da revdep-rebuil= d, bisogna installare <c>sys-libs/libstdc++-v3</c> prima di rimuovere GCC= 3.3 dal sistema. </p> <pre caption=3D"Installazione di libstdc++-v3 e rimozione di GCC 3.3"> # <i>emerge --oneshot sys-libs/libstdc++-v3</i> # <i>emerge -aC =3Dsys-devel/gcc-3.3*</i> </pre> </body> </section> <section id=3D"aggiornamento-da-3.3-a-3.4-emerge-e"> <title>Utilizzo di emerge -e</title> <body> <p> Questo metodo, bench=C3=A9 molto pi=C3=B9 lento, effettua la ricompilazio= ne dell'intero sistema, per essere sicuri che tutti i pacchetti siano ric= ompilati con il nuovo compilatore, ed =C3=A8 perci=C3=B2 pi=C3=B9 sicuro.= Per prima cosa, si aggiornino GCC e libtool e si effettui il passaggio a= l nuovo compilatore. </p> <pre caption=3D"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=3D"i686-pc-linux-g= nu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config. </note> <p> Per ottenere la compatibilit=C3=A0 con vecchie applicazioni C++ binarie, = bisogna installare <c>sys-libs/libstdc++-v3</c>. </p> <pre caption=3D"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) s= ystem, poi il profilo world. Questa fase richiede molto tempo, a seconda = del numero di pacchetti installati, in quanto ricompila il sistema di bas= e (toolchain) e poi tutti i pacchetti installati (compresa la toolchain).= Questo =C3=A8 necessario per assicurarsi che tutti i pacchetti siano sta= ti compilati la nuova toolchain, compresa la toolchain stessa. </p> <pre caption=3D"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=3D"Rimuozione delle vecchie versioni del GCC"> # <i>emerge -aC =3Dsys-devel/gcc-3.3*</i> </pre> </body> </section> </chapter> <chapter id=3D"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=C3= =A0</e> problemi di ricompilazione. Non =C3=A8 necessario disabilitare <c= >ccache</c>, in quanto la cache dei file oggetto sar=C3=A0 comunque ignor= ata, perch=C3=A9 non pi=C3=B9 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-linu= x-gnu/3.3.6/libstdc++.la' is not a valid libtool archive,</e> si esegua i= l comando <c>/sbin/fix_libtool_files.sh 3.3.6</c>. (eventualmente sostitu= ire 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/en= v.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 f= arlo 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=C3=B2 riprendere l'operazione con <c>emerge --resume= </c> Se un pacchetto fallisce ripetutamente, si pi=C3=B2 passare al succe= ssivo con <c>emerge --resume --skipfirst</c>. Non eseguire altre instanze= di emerge nel frattempo o si perderanno le informazioni necessarie per p= oter riprendere la ricompilazione. </p> <p> Se si verifica l'errore: <e>spec failure: unrecognized spec option</e> du= rante l'aggiornamento del compilatore, si provi a ritornare al compilato= re predefinito, azzerare il valore della variabile <c>GCC_SPECS</c> e agg= iornare nuovamente il GCC: </p> <pre caption=3D"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> --------------080803010001080003080807-- -- gentoo-docs-it@gentoo.org mailing list