Wie installiere ich die neueste stabile Version von GCC in Linux Mint?

8

Ich möchte die neueste Version von GCC (GNU Compiler Collection) in Linux Mint 17.3 installieren. Derzeit wird g++ --version4.8.4 zurückgegeben, während die neueste stabile Version 5.3 ist.

winko
quelle
Das Backportieren einer neueren Version ist normalerweise möglich, aber auch nicht trivial. Eine Alternative ist eine lokale Installation von der Quelle. Unter dem Gesichtspunkt der Sauberkeit ist jedoch ein Backport vorzuziehen.
Faheem Mitha
Gibt es eine andere Möglichkeit, es zu installieren, vielleicht nicht als Paket?
Becko
Ja, wie oben erwähnt, ist eine lokale Installation eine Option. Sie müssen jedoch darauf achten, dass Sie es anschließend sauber deinstallieren können. Das Erstellen eines Pakets ist ein schwierigerer Prozess, aber aus Wartungssicht einfacher und sauberer.
Faheem Mitha
Die neueste Version von Gcc, 9.2, wird als Quellcode verteilt. Wenn dieser Kommentar vom Moderator nicht gelöscht wird, finden Sie möglicherweise Zeit, das Howto auf der ursprünglichen Website gcc.gnu.org zu lesen . Vorherige Antwort wurde meiner Meinung nach ohne gültigen Grund gelöscht.
bbaassssiiee

Antworten:

8

Ihre Linux Mint ist mit einem GCC-Paket vorinstalliert. Daher würde ich Ihnen empfehlen, zunächst zu überprüfen, ob das Paket bereits in Ihrem System vorhanden ist, indem Sie den folgenden Befehl in terminal eingeben.

apt-cache search gcc

Wenn Sie kein solches Paket haben, verwenden Sie den folgenden Befehl im Terminal. Zuerst fügen Sie das folgende Repository hinzu:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

Verwenden Sie dann den nächsten Befehl:

sudo apt-get update
sudo apt-get install g++-4.7 c++-4.7

Es gibt immer grundlegende Dinge, die wir lernen sollten; Nehmen Sie es als Voraussetzung vor Linux .. Lernen Sie googeln ... versuchen Sie, mehr harte Suche zu machen ...

Vinood NK Maheshwari
quelle
Warum sollte ich installieren wollen g++-4.7, was eine niedrigere Version ist als die g++-4.8, die ich bereits habe? Ich möchte ein Upgrade durchführen, kein Downgrade.
Becko
Es war 4.8 und Sie müssen vorher nach dem neuesten Paket mit apt-cache search gcc suchen. Ich habe Ihnen Logik gegeben, aber Sie haben meine Punkte wirklich herabgestuft. gr8
Vinood NK Maheshwari
Derzeit scheint diese Antwort inkohärent zu sein. Bitte erläutern Sie, warum das OP v4.7 anstelle von v5 installieren möchte (vorzugsweise ohne Klischees über die Vorteile harter Arbeit).
Agc
Ersetzen Sie 4.7 durch 4.9 und es funktioniert.
Algoman
3

Laden Sie die neueste Version von gcc herunter

wget http://www.netgull.com/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2

Verwenden Sie den Befehl tar -xjf:, um die Datei zu entpacken

Geben Sie das Verzeichnis ein, das Sie gerade entpackt haben, sagen Sie in $HOME/Downloads/gcc-5.3.0, und geben Sie den folgenden Befehl ein:

./configure --disable-checking --enable-languages=c,c++,objc 
--disable-multilib --with-system-zlib prefix=/usr/bin/gcc-5.3

Abhängigkeitsinstallation: Für die Erstellung von GCC sind GMP4.2 +, MPFR 2.4.0+ und MPC 0.8.0+ erforderlich

sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev
sudo apt-get install build-essential

Installieren Sie einen C ++ - Compiler

sudo apt-get install g++

Nächster Typ:

make 
sudo make install

Bearbeiten Sie, wenn Sie immer noch eine Fehlermeldung wie "zlib.h nicht gefunden!" Erhalten. Sie können das Folgende tun, um das Problem zu beheben:

apt-get install zlib1g-dev
GAD3R
quelle
Wenn Sie einige Fehler haben, kommentieren Sie bitte. Ich werde aktualisieren.
GAD3R
Warum --disable-multilib?
Becko
Fehler:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
Becko
Der Link ist tot.
Einpoklum
1

Ich bin mir nicht ganz sicher, was das letzte sein soll, denn es kommen immer die neuesten heraus. Sie können diese jedoch auf diese Weise installieren.

Nehmen Sie als Beispiel gcc-8:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-8 g++-8
gcc-8 --version

Wenn Sie gcc-8 / g ++ - 8 mit höherer Priorität auswählen möchten (in diesem Fall 20), müssen Sie dies ebenfalls tun

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8
Zhi Yuan
quelle
0

Um ehrlich zu sein, ich bin einfach zu faul, um mich von 17.3 zu entfernen - es funktioniert für mich. Davon abgesehen brauchte ich noch einen neueren gcc. Um es wiederholt für verschiedene Ziele zu kompilieren, habe ich ein Bash-Skript (siehe unten), das ich ändere und ausführe (ich schreibe mein eigenes Spielzeug-Betriebssystem, daher muss ich ein speziell generiertes gcc verwenden).

Ändern Sie die Verzeichnisse im folgenden Skript so, dass sie mit den vorhandenen Verzeichnissen übereinstimmen. Ich behalte die kompilierte Version in meinem eigenen Verzeichnis, damit ich problemlos zwischen meiner kompilierten Version und der Systemversion wechseln kann. Ich schlage vor, Sie tun das gleiche. Sie müssen binutils-2.23.2 sowie die gcc-Version herunterladen, an der Sie interessiert sind (ich verwende 7.1.0 unten). Legen Sie sie zusammen mit dem folgenden Skript in einem ~ / contrib-Verzeichnis ab.

Vielleicht möchten Sie auch die Zeile "--enabled-language = c" in "--enabled-language = c, c ++, objc" ändern - mein Projekt benötigt nur C. Eine weitere Änderung wäre der Wert von PLATFORM. Ich benutze "i686-elf", aber das funktioniert nicht für Sie (ich habe es unten in etwas geändert, das für die 32-Bit-Plattform funktioniert). Sie können "x86_64-linux-gnu" für eine 64-Bit-Plattform ausprobieren.

Für Neugierige - der Grund, warum ich es so baue, ist, dass der gcc-Erstellungsprozess einen Fehler hatte, der die Neuerstellung im Quellverzeichnis verhinderte. Ich weiß nicht, ob dieser Fehler noch besteht (ich habe ihn zuletzt in 4.8.0 festgestellt), aber die einzige Problemumgehung bestand darin, explizit ein separates Verzeichnis zu erstellen, falls Sie ihn jemals neu erstellen wollten.

[BEARBEITEN: Führen Sie die Installation der oben von GAD3R vorgeschlagenen Abhängigkeiten durch]

#!/bin/bash

function die() {
   echo $1
   exit 127
}


export PREFIX=/home/lelanthran/opt/cross
export TARGET=i686-linux-gnu
export PATH="$PREFIX/bin:$PATH"

pushd $PWD &> /dev/null
mkdir -p build-binutils
cd build-binutils
../binutils-2.23.2/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --with-sysroot \
   --disable-nls \
   --disable-werror || die "binutils/config error"
make           || die "binutils/make error"
make install   || die "binutils/make install error"

popd &> /dev/null

pushd $PWD &> /dev/null
mkdir -p build-gcc-7.1.0
cd build-gcc-7.1.0
../gcc-7.1.0/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --disable-nls \
   --enable-languages=c \
   --without-headers || die "gcc/config error"
make all-gcc                  || die "gcc/make all-gcc error"
make all-target-libgcc        || die "gcc/make all-target-libgcc error"
make install-gcc              || die "gcc/make install-gcc error"
make install-target-libgcc    || die "gcc/make install-target-libgcc error"
Lelanthran
quelle