Ich möchte die neueste Version von GCC (GNU Compiler Collection) in Linux Mint 17.3 installieren. Derzeit wird g++ --version
4.8.4 zurückgegeben, während die neueste stabile Version 5.3 ist.
Ich möchte die neueste Version von GCC (GNU Compiler Collection) in Linux Mint 17.3 installieren. Derzeit wird g++ --version
4.8.4 zurückgegeben, während die neueste stabile Version 5.3 ist.
Antworten:
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 ...
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.
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
--disable-multilib
?
gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
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
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"