PDA

View Full Version : [C++/Linux] Installare GCC 4.8.1.


vendettaaaaa
22-06-2013, 17:06
Ciao...
da quasi completo ignorante di Linux, vi chiederei di linkarmi una guida chiara che spieghi come compilare l'ultima release di GCC (ma non per forza l'ultima, basta che mi faccia capire un po' come funziona il procedimento) visto che il readme incluso nella tarball con i sorgenti è lunghissimo e mi ci perdo...
Sono riuscito a compilare qualche giorno fa Clang 3.2 seguendo una guida simile, step by step, sintetica ma concisa...ma non trovo niente per GCC...perchè Linux dev'essere così difficile?? :muro:

vendettaaaaa
23-06-2013, 08:40
http://gcc.gnu.org/wiki/InstallingGCC

anche se non capisco perchè non usare il gcc della tua distribuzione...
Perchè il 4.8.1 è feature complete...
Grazie cmq, la guida sicuramente è semplice, speravo in qualcosa che spiegasse il significato delle opzioni in modo più chiaro per un user Windows. Ma a questo punto forse è meglio cercare altrove, magari una "lista spiegata dei comandi più usati della console Linux"...

vendettaaaaa
23-06-2013, 16:56
Sono riuscito a compilarlo sulla VM, a 32bit, oggi ho provato varie volte su una installazione fresca di Ubuntu a 64bit, ma non c'è verso...e ho seguito gli stessi step -.-
Praticamente make fallisce con errore "cannot compute the suffix of object files". In giro dicono sia colpa della mancanza delle librerie gmp, mpc, mpfr...ma io le ho scaricate, prima di tutto nello stesso modo in cui le ho scaricate sull'altra installazione (con ./contrib/download_prerequisites) e poi dai vari siti...la cosa strana è che se non le scarico, configure mi avvisa subito; quindi perchè, scaricandole, configure dovrebbe dire che è tutto ok se poi make fallisce?
Ma ste librerie vanno compilate? Io le scarico e basta con lo script download_prerequisites...e son sicuro che anche sull'altra installazione le ho solo scaricate, senza compilarle...che palle Linux :muro:

edit: sto riprovando, dopo aver direttamente installato le 3 librerie con apt-get...vediamo...

edit2: NIENTE DA FARE PORCA PALETTA

vendettaaaaa
23-06-2013, 18:05
Sembra che la soluzione possa essere usare il comando export LD_LIBRARY_PATH eccetera, come descritto qui:
http://stackoverflow.com/questions/5905434/building-gcc-4-6-libmpfr-so-4-cannot-open-shared-object-file
Ma sono un po' fuso e non ho capito dove dovrei aggiungere questo comando. Lo attacco in coda alle opzioni per ./configure? O lo scrivo in console prima di lanciare il configure?

:muro:

nico159
23-06-2013, 18:35
IMHO ti conviene installarti la beta di Fedora 19

pabloski
23-06-2013, 18:42
LD_LIBRARY_PATH deve puntare a dove si trovano le librerie mptr, gmp e mpc.

Ovviamente vanno compilate prima loro.

p.s. se le hai installate via apt-get, non dimenticare di installare le versioni -dev

SnakePlissken
23-06-2013, 18:43
Sembra che la soluzione possa essere usare il comando export LD_LIBRARY_PATH eccetera, come descritto qui:
http://stackoverflow.com/questions/5905434/building-gcc-4-6-libmpfr-so-4-cannot-open-shared-object-file
Ma sono un po' fuso e non ho capito dove dovrei aggiungere questo comando. Lo attacco in coda alle opzioni per ./configure? O lo scrivo in console prima di lanciare il configure?

:muro:

La seconda che hai detto: dai nella console export LD_LIBRARY_PATH=<...> prima di eseguire la compilazione. Tienila a mente, questa del LD_LIBRARY_PATH, ti potrà servire anche per ricompilare altri progetti.

vendettaaaaa
23-06-2013, 18:46
LD_LIBRARY_PATH deve puntare a dove si trovano le librerie mptr, gmp e mpc.

Ovviamente vanno compilate prima loro.

p.s. se le hai installate via apt-get, non dimenticare di installare le versioni -dev
Le ho installate proprio in versione -dev, come scritto nel wiki di GCC.
La seconda che hai detto: dai nella console export LD_LIBRARY_PATH=<...> prima di eseguire la compilazione. Tienila a mente, questa del LD_LIBRARY_PATH, ti potrà servire anche per ricompilare altri progetti.
Nella console prima del configure o prima del make? Thx :D

Cmq non va bene fare a questo punto --with-gmp=<...> anzichè usare l'export? :stordita:

vendettaaaaa
23-06-2013, 20:24
IMHO ti conviene installarti la beta di Fedora 19
Un passo alla volta, grazie :cool:
LD_LIBRARY_PATH è una variabile d'ambiente che ld legge quando deve cercare le librerie da lineare. è un approccio generico.
Capito. Ho capito che dovrò buttar giù parecchi muri a testate nel mesi a venire...
Però voglio imparare ad usare un nuovo OS e la linea di comando, mi pare molto utile alla mentalità da programmatore, o anche solo come esperienza accumulata...

Tommo
23-06-2013, 20:39
Tieni anche presente che gli eseguibili che compili con quel GCC richiedono di installare la sua stdlib :read:

Questo significa che nel caso migliore l'utente si deve scaricare parecchi mb di pacchetti o compilarselo dal sorgente.
Nel caso peggiore invece la distro non ha i pacchetti nè di GCC 4.8 nè della sua stdlib e si deve compilare GCC da sorgente :D
Nel caso ancora peggiore se prova a installare una nuova stdlib gli scoppiano tutti i programmi e deve formattare (ci sono distro che falliscono miseramente nel versioning della stdlib).

In sostanza se vuoi che la gente possa aprire i tuoi programmi senza bestemmiarci le ore, compila con la roba più vecchia che riesce a compilare il codice, ad esempio GCC 4.4.
Fai conto che Ubuntu 10.04 che teoricamente è ancora "supportato" rientra nel "caso peggiore" e non ha nemmeno GCC 4.6.
Ubuntu 12.04 LTS che è dell'anno scorso ha GCC 4.7.

Ah, il magico mondo di Linux :asd:

PS: non ti aspettare che gli utenti linux capiscano cosa stanno facendo anzi - spesso sono noob orrendi che pensano di sapere tutto perchè LOL WINZOZ :asd:
Per cui non ti aspettare che sappiano:
a) far partire il tuo programma da terminale per leggere l'errore che da quando cliccano e non parte
b) essere modesti e non scriverti per mail "soluzioni" lunghe km che in finale sono tutte minchiate e dovevano installare un pacchetto da APT
c) configurare il loro sistema e non darti la colpa per errori assurdi che capitano perchè hanno messo la root nel desktop e girano come amministratori (lol!)

PPS: Il titolo di questo post potrebbe essere "Free Software or: How I Learned to use GCC and Hate Linux" :asd:

pabloski
23-06-2013, 20:40
Però voglio imparare ad usare un nuovo OS e la linea di comando, mi pare molto utile alla mentalità da programmatore, o anche solo come esperienza accumulata...

Se non hai fretta, ti consiglio di dare uno sguardo a linux from scratch http://www.linuxfromscratch.org/lfs/view/stable/

Tra le altre cose, c'è pure come compilare gcc da sorgenti.

vendettaaaaa
23-06-2013, 20:47
Se non hai fretta, ti consiglio di dare uno sguardo a linux from scratch http://www.linuxfromscratch.org/lfs/view/stable/

Tra le altre cose, c'è pure come compilare gcc da sorgenti.
Visto, ho leggiucchiato qualcosa e da lì ho preso alcune opzioni di configurazione per gcc (anche se credo che siano cmq settate di default, come --enable-threads=posix). Nei prossimi giorni proverò a leggerlo per bene :D

vendettaaaaa
24-06-2013, 00:14
Tieni anche presente che gli eseguibili che compili con quel GCC richiedono di installare la sua stdlib :read:

Questo significa che nel caso migliore l'utente si deve scaricare parecchi mb di pacchetti o compilarselo dal sorgente.
Nel caso peggiore invece la distro non ha i pacchetti nè di GCC 4.8 nè della sua stdlib e si deve compilare GCC da sorgente :D
Nel caso ancora peggiore se prova a installare una nuova stdlib gli scoppiano tutti i programmi e deve formattare (ci sono distro che falliscono miseramente nel versioning della stdlib).

In sostanza se vuoi che la gente possa aprire i tuoi programmi senza bestemmiarci le ore, compila con la roba più vecchia che riesce a compilare il codice, ad esempio GCC 4.4.
Fai conto che Ubuntu 10.04 che teoricamente è ancora "supportato" rientra nel "caso peggiore" e non ha nemmeno GCC 4.6.
Ubuntu 12.04 LTS che è dell'anno scorso ha GCC 4.7.

Ah, il magico mondo di Linux :asd:

PS: non ti aspettare che gli utenti linux capiscano cosa stanno facendo anzi - spesso sono noob orrendi che pensano di sapere tutto perchè LOL WINZOZ :asd:
Per cui non ti aspettare che sappiano:
a) far partire il tuo programma da terminale per leggere l'errore che da quando cliccano e non parte
b) essere modesti e non scriverti per mail "soluzioni" lunghe km che in finale sono tutte minchiate e dovevano installare un pacchetto da APT
c) configurare il loro sistema e non darti la colpa per errori assurdi che capitano perchè hanno messo la root nel desktop e girano come amministratori (lol!)

PPS: Il titolo di questo post potrebbe essere "Free Software or: How I Learned to use GCC and Hate Linux" :asd:
Mi ero perso questo post!
Cmq niente paura, perchè col C++ al momento mi diletto e studio, a lavoro uso F77, sono proprio fortunato a non avere di questi pensieri! :asd::asd:

vendettaaaaa
24-06-2013, 00:27
Anche con export LD_LIBRARY_PATH non cambia niente...
Userò Clang finchè non risolverò il problema, amen. Ora vado a letto, sconsolato, e sempre più fiero di amare Windows e gli installer grafici :cool:

nico159
24-06-2013, 08:16
Anche con export LD_LIBRARY_PATH non cambia niente...
Userò Clang finchè non risolverò il problema, amen. Ora vado a letto, sconsolato, e sempre più fiero di amare Windows e gli installer grafici :cool:
Certo che potevi installarti direttamente clang 3.3 a questo punto:D
http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html
http://llvm.org/releases/3.3/docs/ReleaseNotes.html

pabloski
24-06-2013, 09:23
Anche con export LD_LIBRARY_PATH non cambia niente...
Userò Clang finchè non risolverò il problema, amen. Ora vado a letto, sconsolato, e sempre più fiero di amare Windows e gli installer grafici :cool:

Credo ci sia un ppa per gcc 4.8. Che versioni del sistema operativo stai usando?

vendettaaaaa
24-06-2013, 10:05
Certo che potevi installarti direttamente clang 3.3 a questo punto:D
http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html
http://llvm.org/releases/3.3/docs/ReleaseNotes.html
Tra l'altro, nella mia più totale niubbaggine ieri ho anche compilato Clang dal trunk, in un'oretta e mezza, però in versione Debug ed era lentissimo. Allora mi sono messo a ricompilarlo in Release ma dopo 6 ore non aveva ancora finito...e mi sono accorto che si stava compilando proprio con la sua versione Debug anzichè usare GCC come la prima volta!!! E come se non bastasse dopo ore e ore sprecate ho visto che ci sono i binari precompilati...ffuuuuuuuu! :read:
Credo ci sia un ppa per gcc 4.8. Che versioni del sistema operativo stai usando?
Ubuntu 13.04 x64. Ma perchè non si trovano i binari per GCC 4.8.1?? A momenti son giù usciti quelli di MinGW per Windows...ma su Linux nessun buon samaritano che lo compili e lo impacchetti per i novellini come me?? :(

pabloski
24-06-2013, 10:42
I pacchetti nuovi ci sono, ma la politica di ubuntu è conservativa.

Gcc 4.8 lo puoi trovare qui https://launchpad.net/~ubuntu-toolchain-r/+archive/test

Aggiungi il ppa e puoi procedere. Solo che è ritenuto testing ( considera che gcc 4.8 è uscito a maggio e ubuntu 13.04 ad aprile ).

Altre distribuzioni non si fanno problemi ( arch e gentoo ad esempio ). Debian c'ha il ramo sid in cui mette le ultimissime versioni dei software.

WarDuck
24-06-2013, 12:49
IMHO ti conviene installarti la beta di Fedora 19

O usare Arch ;).

banryu79
24-06-2013, 14:36
Per vendettaaaaa (nick azzecatissimo nel caso in esame :asd: ) ecco, pubblico un "guest post" da parte di Vincenzo1968 (ha l'utenza bannata per aver scassato troppo i cabasisi dei mod :asd: ).

Dice di dare un'occhiata qui:
http://forum.html.it/forum/showthread.php?s=&threadid=1541152