Come utilizzo l'ultimo GCC su Ubuntu?


132

Voglio compilare il mio programma con l'ultima versione di gcc.

Ubuntu 14.04 viene fornito con gcc 4.8.2, però c'è 4.9.0 disponibile, inoltre, vedo che è disponibile come pacchetto: gcc-4.9. Ho provato a installarlo

sudo apt-get install gcc-4.9

ma dice

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Sembra che sia già installato, ma non come quello predefinito? Come lo utilizzo per costruire il mio programma?


Se si desidera installare gcc-4.8, è necessario utilizzare sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Tutti sono in pronti contro termine principale di Ubuntu .

1
@Dumindu Ma come si usa in modo gcc-4.9specifico?
Nickolai Leschov,

Disinstallare gli altri e installare 4.9.

2
@Dumindu Aspetta, mi hai appena detto di fare quello che ho appena fatto? Non funziona.
Nickolai Leschov,

passa all'utente root: sudo su -vai a /usr/binquindi esegui ls -l gcc*e pubblica il tuo output. quindi posterò la tua risposta.
αғsнιη,

Risposte:


196

Il modo migliore per installare correttamente gcc-4.9 e impostarlo come versione gcc predefinita usare:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

Il --slave, con g++, verrà g++commutato insieme gccalla stessa versione. Ma a questo punto gcc-4.9 sarà la tua unica versione configurata in update-alternatives, quindi aggiungi 4.8 a update-alternatives, quindi in realtà c'è un'alternativa, usando:

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

Quindi puoi controllare quale è impostato e cambiare avanti e indietro usando:

sudo update-alternatives --config gcc

NOTA: è possibile saltare l'installazione del repository PPA e utilizzarlo, /usr/bin/gcc-4.9-basema preferisco utilizzare le nuove toolchain aggiornate.


Per GCC 5.X o 6, i pacchetti (e, di conseguenza, i comandi) sono appena chiamati gcc-5, gcc-6ecc. Ciò è dovuto alla modifica dello schema di versione di GCC , in cui 5.1 è la prima versione di GCC 5 e le future versioni 5.X sono per correzioni di bug .


Grazie per la modifica di @muru ... come ho detto sotto, sono rimasto stanco per circa 3 giorni e l'aggiornamento-alternative richiede sudo e penso di aver dimenticato il (-) prima dello slave. :) Quindi grazie.
SudoSURoot,

Provasudo apt-get -f install
SudoSURoot,

4
Funziona perfettamente. Inoltre, sostituisci 5per 4.9far funzionare GCC 5 su Ubuntu. (Il mio team di sviluppo ora gestisce entrambi 4.9 e 5 l'uno accanto all'altro seguendo il tuo metodo.) Grazie e +1!
CodeMouse92,

2
@hwat Dovrebbe funzionare per gcc-6ora.
edwinksl,

1
Questo mi ha aiutato diverse volte, ma dimentico sempre: assicurati di applicare la stessa soluzione ad altre utility della raccolta di compilatori GNU che potresti usare! GCOV, ad esempio, si lamenterà di una mancata corrispondenza della versione in caso contrario, producendo probabilmente dati errati.
Toby,

23

Usa il toolchain Test Builds PPA :

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

Non credo che GCC 4.9 sia ancora completamente disponibile per Ubuntu 14.04. Il pacchetto base ( gcc-4.9-base ) e il compilatore GCC Go 4.9 ( gccgo-4.9 ) sono disponibili, ma gli altri frontend no. Non so perché.


1
@SudoSURoot può essere impostato o meno come predefinito, non è una mia preoccupazione (ci sono altri post che trattano questo). Tuttavia, che i frontend C e C ++ di GCC 4.9 possono essere installati su 14.04 esclusivamente dai repository ufficiali è palesemente falso, poiché il gcc-4.9-basepacchetto non contiene e non conterrà un frontend binario.
muru,

Hai ragione sul pacchetto base. Come vedrai nella mia risposta, ho usato il PPA. Ho pubblicato prima il commento, poi ho risposto alla domanda come indicato, dalla domanda ... Perché semplicemente aggiungendo il PPA e installando 4.9 non lo abilito che è necessario per "usare gcc 4.9". Avrei dovuto eliminare il commento dopo aver risposto alla domanda. Chiedo scusa. La mia risposta è su cosa dovrei concentrarmi. Sono balzato alle conclusioni ... e ho commentato velocemente. In realtà sono abbastanza nuovo con l'utilizzo di 14.04 da quando mi sono procurato un server dedicato. Mi assicurerò di non aver votato per difetto e lo riparerò se lo facessi.
SudoSURoot,

@SudoSURoot va bene. Anche così, a meno che OP non abbia un problema con la chiamata gcc-4.9o g++-4.9invece di gcco g++, continuerò a non aggiornare le alternative.
muru,

Capisco bene. Costruisco sistemi Android, che usano molti $ (quale gcc) e $ (quale g ++) ecc ... Quindi devo sempre avere i valori predefiniti impostati sulla versione che voglio usare. Parte del mio codice del kernel non si sarebbe compilato con l'host gcc-4.8, quindi ho dovuto aggiornare. Ho appena ripetuto ciò che ha funzionato per me. Grazie per avermelo ricordato, però ... Come ho detto nella mia modifica, dall'ultimo commento, potrei aver votato in anticipo, prematuramente, se è così lo riparerò. Ero stato sveglio per 2 o 3 giorni lavorando sul mio sorgente del kernel quando li ho pubblicati. Ognuno ha i suoi modi ... Ho appena trovato la risposta più approfondita, meno domande faccio
SudoSURoot,

L'ultimo pacchetto è gcc-7 ATM
Elder Geek,

5

Ubuntu 16.04 e versioni successive

Puoi già installare gcc 7.0 in Ubuntu 18.04 dai repository predefiniti. Per installare gcc-7 in Ubuntu 17.10, 18.04 e 18.10 aprire il terminale e digitare:

sudo apt install gcc-7 

Per installare gcc-8 in Ubuntu 18.04 e versioni successive aprire il terminale e digitare:

sudo apt install gcc-8

Per installare gcc-9 in Ubuntu 19.04 e versioni successive aprire il terminale e digitare:

sudo apt install gcc-9

Puoi installare gcc-7 in Ubuntu 16.04 da ppa: jonathonf / gcc-7.1.

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

Puoi installare gcc-8 in Ubuntu 16.04 da ppa: jonathonf / gcc-8.0.

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 

3

Per chiamare gcc 4.9 in modo specifico, usare gcc-4.9al prompt dei comandi.

Tutte le versioni di gcc che hai installato possono essere chiamate singolarmente aggiungendo un trattino e il numero di versione alla fine di gcc. Nel tuo caso, gcc-4.8e gcc-4.9dovrebbe essere disponibile. In un terminale, digitare gcc-(notare il trattino) e la linguetta push due volte per vedere se ci sono altre versioni installate.

Si noti che il gcc predefinito è probabilmente ancora 4.8. (Utilizzare gcc -vper verificarlo.) Sfortunatamente cambiare l'impostazione predefinita non è banale se si è installato gcc-4.9 dal repository predefinito in quanto non ha aggiunto una voce di aggiornamento-alternative. Se sei interessato a come modificare l'impostazione predefinita, vedi le risposte a questa domanda .


Come posso fare un progetto basandomi su makefile e possibilmente su altre build di infrastrutture di build gcc-4.9invece che su gcc?
Nickolai Leschov,

1
Il modo migliore per assicurarsi che gcc-4.9 sia usato nei sistemi di compilazione è cambiare il gcc predefinito. Segui il link che ho fornito nella mia risposta per sapere come fare. In alternativa, potresti creare un link simbolico, anche se sconsiglio questo, tranne come ultima risorsa poiché il gestore dei pacchetti potrebbe lamentarsi durante l'aggiornamento di gcc. Se insisti: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Per ripristinare le impostazioni predefinite di gcc-4.8, basta sostituire gcc-4.9 con gcc-4.8. Potrebbe essere necessario farlo anche con g ++ e altri compilatori GNU.
holocronweaver,

GCC 4.9 non è disponibile in Ubuntu 14.04 (ad eccezione del compilatore GCC Go ), quindi sebbene questa risposta probabilmente funzionerà in Ubuntu 14.10, non aiuta ora. :-)
Søren Løvborg

In realtà è disponibile in Ubuntu 14.04, anche se potrebbe essere stato un errore: pacchetti.ubuntu.com/trusty/gcc-4.9-base . Lo uso da aprile.
holocronweaver,

0

OK facciamo questo:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M

Tutte le domande:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.