Wie verwende ich das neueste GCC unter Ubuntu?

132

Ich möchte mein Programm mit der neuesten Version von kompilieren gcc.

Ubuntu 14.04 kommt mit gcc 4.8.2, jedoch gibt es 4.9.0 zur Verfügung, außerdem sehe ich , dass es als Paket zur Verfügung: gcc-4.9. Ich habe versucht, es zu installieren

sudo apt-get install gcc-4.9

aber es heißt

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.

Sieht aus wie es bereits installiert ist, nur nicht als Standard? Wie nutze ich es, um mein Programm zu erstellen?

Nickolai Leschov
quelle
Wenn Sie installieren möchten gcc-4.8, müssen Sie verwenden sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Alle sind in Ubuntu Haupt Repo .
1
@ Dumindu Aber wie verwende ich das gcc-4.9konkret?
Nickolai Leschov
Deinstallieren Sie andere und installieren Sie 4.9.
2
@ Dumindu Warten Sie, haben Sie mir gerade gesagt, ich soll das tun, was ich gerade getan habe? Es funktioniert nicht.
Nickolai Leschov
Wechseln Sie zum Root-Benutzer: sudo su -Gehen Sie zu /usr/binAusführen ls -l gcc*und veröffentlichen Sie Ihre Ausgabe. dann poste ich deine antwort.
α14sнιη

Antworten:

196

Der beste Weg, um gcc-4.9 korrekt zu installieren und als Standard-gcc-Version festzulegen, ist:

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

Das --slave, mit g++, bewirkt g++, dass mit gccauf die gleiche Version umgeschaltet wird . Aber zu diesem Zeitpunkt wird gcc-4.9 Ihre einzige Version sein, die in konfiguriert update-alternativesist. Fügen Sie also 4.8 hinzu update-alternatives, damit es tatsächlich eine Alternative gibt, indem Sie Folgendes verwenden:

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

Dann können Sie überprüfen, welches eingestellt ist, und mit den folgenden Schritten vor und zurück wechseln:

sudo update-alternatives --config gcc

HINWEIS: Sie können die Installation des PPA-Repository überspringen und nur verwenden /usr/bin/gcc-4.9-base, ich bevorzuge jedoch die Verwendung der frisch aktualisierten Toolchains.


Für GCC 5.x oder 6, die Pakete (und entsprechend die Befehle) werden nur genannt gcc-5, gcc-6usw. Das ist aufgrund der Änderung der GCC-Version Schema , wobei 5.1 die erste GCC 5 Release ist, und zukünftige 5.x Versionen sind für Bugfixes .

SudoSURoot
quelle
Danke für die Bearbeitung @muru ... wie ich unten sagte, ich war für ca. 3 Tage sehr müde und Update-Alternativen erfordert Sudo und ich denke, ich habe das (-) vor Slave vergessen. :) Also vielen Dank.
SudoSURoot
Versuchen Siesudo apt-get -f install
SudoSURoot
4
Das funktioniert einwandfrei. Außerdem ersetzen 5in für 4.9GCC 5 arbeitet auf Ubuntu zu erhalten. (Mein Entwicklerteam führt jetzt nach Ihrer Methode 4.9 und 5 nebeneinander aus.) Vielen Dank und +1!
CodeMouse92
2
@hwat Es sollte gcc-6jetzt funktionieren .
Edwinksl
1
Das hat mir schon mehrmals geholfen, aber ich vergesse immer - stellen Sie sicher, dass Sie dieselbe Lösung auf andere Dienstprogramme in der GNU-Compiler-Sammlung anwenden, die Sie möglicherweise verwenden! Wenn Sie dies nicht tun, wird sich GCOV beispielsweise über einen Versionsfehler beschweren, der möglicherweise zu falschen Daten führt.
Toby
23

Verwenden Sie die Toolchain Test Builds PPA :

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

Ich glaube nicht, dass GCC 4.9 für Ubuntu 14.04 vollständig verfügbar ist. Das Basispaket ( gcc-4.9-base ) und der GCC Go 4.9-Compiler ( gccgo-4.9 ) sind verfügbar, die anderen Frontends jedoch nicht. Ich weiß nicht warum.

muru
quelle
1
@SudoSURoot es kann oder kann nicht als Standard festgelegt werden, das ist nicht mein Anliegen (es gibt andere Beiträge, die sich damit befassen). Es ist jedoch offensichtlich falsch, dass die C- und C ++ - Frontends von GCC 4.9 unter 14.04 nur aus den offiziellen Repositorys installiert werden können, da das gcc-4.9-basePaket kein binäres Frontend enthält und auch nicht enthalten wird.
muru
Sie haben Recht mit dem Basispaket. Wie Sie in meiner Antwort sehen werden, habe ich den PPA verwendet. Ich habe zuerst den Kommentar gepostet und dann die Frage wie angegeben von der Frage aus beantwortet ... Da das Hinzufügen des PPA und das Installieren von 4.9 nicht das Ermöglichen von "Verwenden von gcc 4.9" ermöglicht. Ich hätte den Kommentar löschen sollen, nachdem ich die Frage beantwortet habe. Ich entschuldige mich. Meine Antwort ist, worauf man sich konzentrieren sollte. Ich bin zu Schlussfolgerungen gesprungen ... und habe zu schnell kommentiert. Ich bin eigentlich ziemlich neu mit der Verwendung von 14.04, da ich mir dedizierten Server bekam. Ich werde dafür sorgen, dass ich nicht runter stimme und ich werde es reparieren, wenn ich es tue.
SudoSURoot
@ SudoSURoot in Ordnung. Trotzdem werde ich mich daran halten, die Alternativen nicht zu aktualisieren , es sei denn, OP hat ein Problem mit dem Aufrufen von gcc-4.9oder g++-4.9anstelle von gccoder g++.
muru
Ich verstehe vollkommen. Ich baue allerdings Android-Systeme, die eine Menge von $ (welches gcc) und $ (welches g ++) usw. verwenden. Deshalb muss ich immer die Standardeinstellungen für die Version haben, die ich verwenden möchte. Einige meiner Kernel-Codes ließen sich nicht mit Host gcc-4.8 kompilieren, sodass ich ein Update durchführen musste. Ich habe nur wiederholt, was für mich funktioniert hat. Vielen Dank, dass Sie mich daran erinnert haben ... Wie ich in meiner Bearbeitung bereits sagte, habe ich aus dem letzten Kommentar möglicherweise vorzeitig für eine Abwahl gestimmt, wenn ja, werde ich das Problem beheben. Ich hatte 2 oder 3 Tage an meiner Kernelquelle gearbeitet, als ich diese gepostet habe. Jeder hat seine Art ... Ich fand nur, je gründlicher meine Antwort, desto weniger Fragen habe ich
SudoSURoot
Das neueste Paket ist gcc-7 ATM
Elder Geek
5

Ubuntu 16.04 und höher

Sie können gcc 7.0 bereits in Ubuntu 18.04 aus den Standard-Repositorys installieren. Um gcc-7 unter Ubuntu 17.10, 18.04 und 18.10 zu installieren, öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt install gcc-7 

Um gcc-8 in Ubuntu 18.04 und höher zu installieren, öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt install gcc-8

Um gcc-9 in Ubuntu 19.04 und höher zu installieren, öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt install gcc-9

Sie können gcc-7 unter Ubuntu 16.04 von ppa: jonathonf / gcc-7.1 installieren.

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

Sie können gcc-8 unter Ubuntu 16.04 von ppa: jonathonf / gcc-8.0 installieren.

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

Verwenden Sie gcc-4.9an der Eingabeaufforderung, um gcc 4.9 speziell aufzurufen .

Alle von Ihnen installierten gcc-Versionen können einzeln durch Hinzufügen eines Bindestrichs und der Versionsnummer am Ende von aufgerufen werden gcc. In Ihrem Fall gcc-4.8und gcc-4.9sollte verfügbar sein. Geben Sie in einem Terminal gcc-zweimal den Bindestrich und den Push-Tab ein, um festzustellen, ob andere Versionen installiert sind.

Beachten Sie, dass der Standard-gcc wahrscheinlich immer noch 4.8 ist. (Verwenden Sie gcc -vdiese Option , um dies zu überprüfen.) Leider ist es nicht einfach, die Standardeinstellung zu ändern, wenn Sie gcc-4.9 aus dem Standard-Repository installiert haben, da kein Eintrag für alternative Aktualisierungen hinzugefügt wurde. Wenn Sie daran interessiert sind, wie Sie die Standardeinstellung ändern, lesen Sie die Antworten auf diese Frage .

holocronweaver
quelle
Wie erstelle ich ein Projekt, das auf Makefile und möglicherweise einer anderen Build-Infrastruktur basiert, mit der gcc-4.9stattdessen erstellt wird gcc?
Nickolai Leschov
1
Der beste Weg, um sicherzustellen, dass gcc-4.9 systemübergreifend verwendet wird, besteht darin, den Standard-gcc zu ändern. Folgen Sie dazu dem Link, den ich in meiner Antwort angegeben habe. Alternativ können Sie auch einen symbolischen Link erstellen. Ich empfehle dies jedoch als letzten Ausweg, da sich der Paketmanager möglicherweise beim Aktualisieren von gcc beschwert. Wenn Sie darauf bestehen: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Ersetzen Sie einfach gcc-4.9 durch gcc-4.8, um zur Standardeinstellung von gcc-4.8 zurückzukehren. Möglicherweise müssen Sie dies auch mit g ++ und anderen GNU-Compilern tun.
Holocronweaver
GCC 4.9 ist in Ubuntu 14.04 nicht verfügbar (mit Ausnahme des GCC Go-Compilers ). Diese Antwort wird also wahrscheinlich in Ubuntu 14.10 funktionieren, aber sie hilft jetzt nicht weiter. :-)
Søren Løvborg
Tatsächlich ist es in Ubuntu 14.04 verfügbar, obwohl es möglicherweise ein Fehler war: packages.ubuntu.com/trusty/gcc-4.9-base . Ich benutze es seit April.
Holocronweaver
0

Ok, lass uns das machen:

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

Alle Fragen:

Ciro Santilli ist ein Schauspieler
quelle