# GCC 3.4 Ne vale la pena!

## motaboy

Finalmente qualche giorno fa GCC 3.4 è uscito nella sua veste "stabile".

C'è un post nei forum attivo da molto tempo in cui molte persone collaborano per testarlo e correggere i vari programmi/ebuild per funzionare con esso:

https://forums.gentoo.org/viewtopic.php?t=108718

La grande novità deriva dal C++, il parser è di per se molto migliorato (è stato completamente riscritto) e cosa ancora più bella supporta gli header precompilati (come molti compilatori winzozz). Inoltre le ottimizzazioni dovrebbero essere migliori e creare meno problemi.

Le QT, sono già predisposte a gestirle, mentre sfortunatamente i programmi per KDE no, anche perchè non è un lavoro semplice e non sempre può essere applicato, vedi qua: 

https://forums.gentoo.org/viewtopic.php?t=164443

ALLORA QUALCHE DATO:

```

Qt con gcc 3.3.3

       merge time: 56 minutes and 3 seconds.

Qt con gcc 3.4 e precompile header.

       merge time: 30 minutes and 27 seconds.

```

Probabilmente non sono proprio dati affidabilissimi (non mi ricordo cosa stavo facendo quando ho emerso le Qt con gcc 3.3.3), però altre persone hanno avuto prestazioni in proporzione simili.

Quando tutti i programmi KDE e C++ in generale li supporteranno ci sarà da divertirsi!

Per ogni info vi riporto al post che vi ho segnalato. Un'ultima cosa, se per caso utilizzate "-mcpu" (è deprecato) (e non -march) è meglio cambiarla subito in "-mtune" visto che a me GCC 3.4 ha riportato un errore durante la sua compilazione.

Bye!

----------

## motaboy

NOTIZIA dell'ultima ora. Adesso è nel portage tree.

Bye!

----------

## silian87

Speriamo che i programmi in C++ si compilini veramente prima. Avevo notato che tutto quello che era scritto in c++ (vedi kde) ci metteva di piu' a compilarsi di quello scritto in C.

In bocca al lupo GCC!!!!!!!!!   :Very Happy: 

----------

## pascalbrax

si ma in performance d'utilizzo? non cambia niente, vero?

/me che rimpiange il gcc 2.95...

----------

## motaboy

Se ti riferisci alle ottimizzazioni del codice eseguibile, GCC 3.x è sempre stato più performante del 2.95, il 2.95 era più veloce a compilare ma non affriva grandi ottimizzazioni.

Bye!

----------

## fedeliallalinea

 *motaboy wrote:*   

> Se ti riferisci alle ottimizzazioni del codice eseguibile, GCC 3.x è sempre stato più performante del 2.95, il 2.95 era più veloce a compilare ma non affriva grandi ottimizzazioni.

 

Io ho sempre sentito che gcc 3.x crea codice piu' lento di gcc 2.95

----------

## popposoft

provo a fare un esperimento estremo: formattone e ricompilazione dallo stage 1 con gcc 3.4.0

Ricompilo tutto con gli header del 2.6.5

le mie CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

ho un portatile pentium4 (da fisso) 2.8ghz 512mB ram

io ho provato xfs tempo fa e sono rimasto molto soddisfatto. so che non è il topic, ma me lo consigliate o preferite reiser per le prestazioni?

poi per tornare dentro al topic vi dico che vi posterò, se ce ne saranno, dei miglioramenti che spulcerò dai log di emerge

Commenti sono bene accetti  :Wink:  grazie!

----------

## vificunero

 *motaboy wrote:*   

> NOTIZIA dell'ultima ora. Adesso è nel portage tree.
> 
> Bye!

 

Ho notato che viene considerato come un emerge a parte nel senso che non lo considera come aggiornamente di gcc-3.3. Bisogna quindi emergelo segnalando ad emerge l'intero path dell'ebuild e successivamente unmergere a mano gcc-3.3?

Grazie.

----------

## shev

 *vificunero wrote:*   

> Ho notato che viene considerato come un emerge a parte nel senso che non lo considera come aggiornamente di gcc-3.3

 

Semplicemente perchè vengono installati in slot diversi (vedi la doc per il significato di slot in gentoo), quindi possono coesistere differenti versioni di gcc sullo stesso sistema. Se poi usi gcc-config puoi switchare da uno all'altro in modo rapido. Se poi proprio non vuoi più .3 allora unmergilo pure.

Su ppc questo 3.4 come si comporta, è stabile o è meglio aspettare?

----------

## blackfede

Conosco un mio amico che se lo sta compilando adesso su MacOS, e sta facendo un po di test. Appena mi darà qualche risultato vi aggiorno!  :Very Happy: 

----------

## Paper

Occhio pero': la versione di libstdc++ di gcc 3.4 e' _diversa_ da quella che c'e' in gcc 3.3, per questioni di compatibilità binaria. Per cui, finche' tutti i programmi c++ compilati con la versione 3.3 non sono ricompilati con la 3.4, non bisogna assolutamente fare unmerge della 3.3!

PS: per tutti quelli che si infurieranno pensando "ma che cavolo, cambiano el ABI c++ ad ogni versione??!?! bastaaa!!": il cambio di ABI in questa versione e' stato motivato, se non erro, dalla necessita' di aderire completamente allo standard, cosa a cui ci si era avvicinati con la versione 3.x ma che era ancora da perfezionare (in sintesi  :Wink: 

Ciao,

Paper

----------

## motaboy

Se volete riaggiornare tutto il sistema a GCC 3.4 è meglio che controllare i post che vi ho segnalato, molti programmi (e anche alcuni ebuild) necessitano di essere aggiornati per supportare corretamente gcc 3.4.

Soprattutto quelli che utilizzano direttamente codice assembly.

Bye!

----------

## theRealMorpheu5

In definitiva ci ho capito pochino... io, comune mortale, come posso passare da .3 a .4 in modo indolore e senza dove reinstallare da stage1? (cosa che farei volentieri se avessi almeno un altro paio di athlon a disposizione  :Wink:  )

----------

## motaboy

Emergi gcc 3.4  :Smile: 

```

emerge /usr/portage/sys-devel/gcc/gcc-3.4.0.ebuild

```

Viene installato con un'altro slot perciò mantiene anche il compilatore che avevi in precedenza (anche per evitare i problemi di compatibilità coi programmi compilati con le precedenti librerie stdc++)

Poi puoi switchare da un compilatore all'altro usando gcc-config.

```

emerge gcc-config

```

Per avere una lista:

```

gcc-config -l

```

Per settare un compilatore:

```

gcc-config numero

```

Bye!

----------

## silian87

Scusate se e' un po' ot, ma sul mio athlon 1000 348ram con X avviato in gnome e con nice --20 ecco quanto ci mette a compilare gcc-3.2.3:

```

real    92m11.772s

user    61m50.513s

sys     20m46.707s

```

Come e'?   :Confused: 

----------

## motaboy

Chi ci mette a compilare cosa?

Per caso gcc a compilare se stesso? non credo che sia utile un confronto del genere.

prova piuttosto a confrontare quanto ci mette il 3.4 rispetto al 3.3 a compilare le qt.

Bye!

----------

## blackfede

Compilato gcc-3.4 in 40 minuti circa. Adesso ho dato emerge world e poi faccio i confronti  :Smile: 

----------

## motaboy

Come ho detto nel post iniziale, non vedrai grandi miglioramenti in termini di tempi di compilazione di programmi C++ (a parte le qt) finchè tutti questi non saranno modificati per gestire gli header precompilati.

Inoltre alcuni pacchetti non compilano ancora, tipo le sdl, xine etc... Ci sono patch per essi sul post che ti ho detto.

Cmq dicono che ci sono buoni guadagni dal punto i vista delle prestazioni (notevoli soprattutto per i nuovi processori a 64 bit).

Bye!

----------

## FonderiaDigitale

Anche se sono uno da ~x86, preferisco aspettare che almeno il 75% dei programmi vengano testati col 3.4 prima di rischiare di fare il passaggio e trovarmi il sistema mezzo funzionante.. anche considerando che non uso QT ma GTK.

----------

## pinguinoferoce

QUalcuno l' ha provato sui ppc?

(magari hanno migliorato il supporto altivec)

----------

## fedeliallalinea

 *pinguinoferoce wrote:*   

> QUalcuno l' ha provato sui ppc?
> 
> (magari hanno migliorato il supporto altivec)

 

Qua xchris mi sembra che dice di averlo installato ma incasinando la macchina.

----------

## xchris

in realta' perche' provavo anche -mpowerpc64

senza sembra andare bene..

pero' tieni conto che ho un base system.

ciao

----------

## Luc@s

novita lato C??

----------

## shev

Visto che è uscita la gentoo 2004.1, se ha risolto il problema del boot da livecd sul mio pbook credo reinstallerò tutto il sistema da stage1, quindi credo proprio proverò gcc 3.4 fin dall'inizio  :Very Happy: 

Questa sera scarico il livecd e faccio partire l'installazione, a breve nuove notizie sul gcc 3.4 e ppc

----------

## pinguinoferoce

mica la gentoo è stata creata x smanettare?

bene , sto emergendo  gcc 3.4.0 .....

(poi magari si riuscirà pure ad avere -O3 senza problemi .,,)

----------

## pinguinoferoce

ho capito che ciò che mi procurava alcuni binari balordi era il flag

-mcpu=7450

sostituito da -mcpu=7400 

ora sta finendo di compilaree .....

spero che vada + veloce sul versante c++

----------

## -YoShi-

Rispolvero questo vecchio topic xchè ho un problemuccio. 

 *Shev wrote:*   

>  *vificunero wrote:*   Ho notato che viene considerato come un emerge a parte nel senso che non lo considera come aggiornamente di gcc-3.3 
> 
> Semplicemente perchè vengono installati in slot diversi (vedi la doc per il significato di slot in gentoo), quindi possono coesistere differenti versioni di gcc sullo stesso sistema. Se poi usi gcc-config puoi switchare da uno all'altro in modo rapido. Se poi proprio non vuoi più .3 allora unmergilo pure.
> 
> Su ppc questo 3.4 come si comporta, è stabile o è meglio aspettare?

 

Xrchè invece, a me me lo considera come aggiornamento/downgrade? C'è qualcosa da configurare?

Il sistema di "slot" funziona anche con un downgrade di gcc? perchè devo compilare i driver dello scanner (iscan) e hanno bisogno per forza di gcc 3.2

P.S. Ma se emergo poi gcc 3.4 e voglio tenere anche il 3.3 ogni volta devo modificare il make.conf oppure esiste un sistema alteranativo? magari automatico?

----------

## ares

Volendo puoi disinstallare le gcc 3.3 e installare queste librerie sys-libs/libstdc++-v3 in modo da nn avere problemi con quei programmi che richiedono la versione di gcc 3.3

Io sono partito dallo stage1 con bootstrap con headers del kernel 2.6 e USE nptl per il pacchetto glibc , i pacchetti che nn si riescono cmq a installare sono realmente pochi anche per via del grande sforzo di molti utenti di fare report bug oppure ancora meglio nel rilasciare patch ( i pacchetti in questione sono ardour e hydrogen per me , che mi stanno facendo scervellare, quindi pacchetti di nn necessaria importanza per il sistema )

----------

## theRealMorpheu5

Allora, come stiamo a compatibilità? Qualche aggiornamento? Io sto per emergere KDE e vorrei farlo col 3.4... ragguagli?

No, "non usare KDE" non vale  :Smile: 

----------

## paman

 *motaboy wrote:*   

> Finalmente qualche giorno fa GCC 3.4 è uscito nella sua veste "stabile".
> 
> 

 

Se volete un consiglio, andateci cauti. Il kernel 2.4.26 non compila con gcc 3.4.0 (io l'ho fatto con ArchLinux ma la cosa dovrebbe valere per tutte le distribuzioni)

----------

## -YoShi-

Ma come mai nn mi funziona il sistema di "slot" e mi fa l'upgrade/downgrade di gcc?

E per il make.conf? è sufficente dare gcc-config, selezionare la versione del compilatore e commentare/decommentare la riga CFLAGS in base a che gcc si sta usando?

----------

## blackfede

Per quello che riguarda il sistema di solt, non so dirti nulla, ma per il passaggio  da 3.3. a 3.4 io faccio esattamente come hai detto tu...

gcc-config, cambio cflags, source /etc/profile.

----------

## shev

 *-YoShi- wrote:*   

> Ma come mai nn mi funziona il sistema di "slot" e mi fa l'upgrade/downgrade di gcc?

 

Bho, dovrebbe andare da solo. Controlla gli ebuild e prova a cambiare la variabile SLOT se è uguale in entrambe le versioni che vuoi avere, se ti chiede di fare l'upgrade/downgrade probabilmente usano lo stesso slot. O metti momentaneamente la variabile AUTOCLEAN a "no" nel tuo make.conf per evitare che emerso gcc3.4 ti levi la versione vecchia.

 *Quote:*   

> E per il make.conf? è sufficente dare gcc-config, selezionare la versione del compilatore e commentare/decommentare la riga CFLAGS in base a che gcc si sta usando?

 

Perchè dovresti modificare make.conf? A regola basta gcc-config, il make.conf lo tocchi solo se vuoi usare flags diverse in base al compilatore. Non ho capito qualcosa?

----------

## -YoShi-

 *Shev wrote:*   

> 
> 
> Bho, dovrebbe andare da solo. Controlla gli ebuild e prova a cambiare la variabile SLOT se è uguale in entrambe le versioni che vuoi avere, se ti chiede di fare l'upgrade/downgrade probabilmente usano lo stesso slot. O metti momentaneamente la variabile AUTOCLEAN a "no" nel tuo make.conf per evitare che emerso gcc3.4 ti levi la versione vecchia.
> 
> 

 

Il problema è che nn lo fa...adesso provo a fare come dici.

 *Shev wrote:*   

> 
> 
> Perchè dovresti modificare make.conf? A regola basta gcc-config, il make.conf lo tocchi solo se vuoi usare flags diverse in base al compilatore. Non ho capito qualcosa?

 

Perchè ho alcune flag che da quanto ho capito col 3.4 sono deprecated, e alcune, che non sono sicuro vadano col 3.3.

3.3

```

CFLAGS="-mcpu=pentium4 -march=pentium4 -O3 -mmmx -msse -mfpmath=sse -pipe-fomit-frame-pointer"

```

3.4

[code]

CFLAGS="-O2 -march=pentium4 -frename-registers -fforce-addr -fforce-mem

-ffast-math -ftracer -pipe -fomit-frame-pointer -fweb"

[code]

So che nn è il posto giusto, ma nn credo sia tanto OT dato che fa parte della domanda InTopic  :Smile: 

----------

## ares

Ora nn ricordo + bene , ma mi pare  che anche se ti chiede di fare l'upgrade delle gcc cmq sia te le mette in uno slot differente

----------

