Come installare l'ultima versione stabile di GCC in Linux Mint?


8

Voglio installare l'ultima versione di GCC (collezione di compilatori GNU) in Linux Mint 17.3. Attualmente g++ --versionrestituisce 4.8.4, mentre l'ultima versione stabile è 5.3.


Il backport di una versione più recente è generalmente possibile, ma è anche non banale. Un'alternativa è un'installazione locale dalla fonte. Dal punto di vista della pulizia, è preferibile un backport.
Faheem Mitha,

C'è un altro modo per installarlo, forse non come pacchetto?
becko,

Sì, come ho detto sopra, un'installazione locale è un'opzione. Ma devi fare attenzione a poterlo disinstallare in modo pulito in seguito. Costruire un pacchetto è un processo più difficile, ma più facile e più pulito dal punto di vista della manutenzione.
Faheem Mitha,

L'ultima versione di Gcc, 9.2, è distribuita come codice sorgente, se questo commento non viene eliminato dal moderatore, allora potresti trovare il tempo di leggere il howto sul suo sito originale gcc.gnu.org . La risposta precedente è stata eliminata senza motivo valido IMHO.
bbaassssiiee,

Risposte:


8

Linux Mint è preinstallato con un pacchetto GCC. Quindi per prima cosa ti consiglio di verificare se il pacchetto è già presente nel tuo sistema digitando il seguente comando nel terminale.

apt-cache search gcc

Nel caso in cui non si disponga di tale pacchetto, utilizzare innanzitutto il seguente comando nel terminale, quindi è necessario aggiungere il seguente repository:

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

quindi utilizzare il comando successivo:

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

C'è sempre una cosa di base che dovremmo imparare; prendilo come prerequisito prima di Linux .. Impara a cercare su Google ... prova a fare ricerche più difficili ...


Perché dovrei voler installare g++-4.7, che è una versione inferiore rispetto a g++-4.8, che ho già? Voglio aggiornare, non downgrade.
becko,

era 4.8 e devi cercare prima l'ultimo pacchetto disponibile con apt-cache search gcc ti ho dato la logica ma davvero hai declassato i miei punti gr8
Vinood NK Maheshwari

Al momento questa risposta sembra incoerente. Spiegare perché l'OP vorrebbe installare la v4.7 anziché la v5 (preferibilmente senza cliché sulle virtù del duro lavoro).
agc,

sostituire 4.7 con 4.9 e funziona.
Algoman

3

scarica l'ultima versione di gcc

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

usa il comando: tar -xjfper decomprimere il file

Inserisci la directory che hai decompresso proprio ora, dì $HOME/Downloads/gcc-5.3.0, quindi digita command:

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

Installazione delle dipendenze: build GCC richiede GMP4.2 +, MPFR 2.4.0+ e MPC 0.8.0+ e build essenziale

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

installa un compilatore C ++

sudo apt-get install g++

Tipo successivo:

make 
sudo make install

Modifica se ricevi ancora messaggi di errore come "zlib.h non trovato!" puoi fare quanto segue per risolverlo:

apt-get install zlib1g-dev

In caso di errori, si prega di commentare. Aggiornerò
GAD3R,

Perché --disable-multilib?
becko,

errore:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
becko

Il link è morto.
einpoklum,

1

Non sono sicuro di quale dovrebbe essere l'ultimo, perché ci sono sempre alcune novità. Ma puoi installarne uno qualsiasi in questo modo.

Prendi gcc-8 come esempio:

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

se si desidera selezionare gcc-8 / g ++ - 8 con priorità più alta (20 in questo caso), è necessario anche

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8

0

A dire la verità, sono semplicemente troppo pigro per andarmene dalla 17.3 - funziona per me. Detto questo, avevo ancora bisogno di un nuovo gcc. Per compilarlo ripetutamente per diversi target ho uno script bash (vedi sotto) che modifico ed eseguo (sto scrivendo il mio sistema operativo giocattolo, quindi devo usare un gcc appositamente generato).

Cambia le directory nello script qui sotto in modo che corrispondano alle directory che hai. Conservo la versione compilata nella mia directory in modo da poter passare facilmente dalla mia versione compilata alla versione del sistema. Ti suggerisco di fare lo stesso. Devi scaricare binutils-2.23.2 così come la versione gcc che ti interessa (sto usando 7.1.0 di seguito). Inseriscili in una directory ~ / contrib insieme allo script seguente.

Potresti anche voler cambiare la riga "--enabled-languages ​​= c" in "--enabled-languages ​​= c, c ++, objc" - il mio progetto ha solo bisogno di C. Un'altra modifica sarebbe il valore di PLATFORM. Uso "i686-elf" ma non funzionerà per te (l'ho modificato di seguito in qualcosa che funzionerà per la piattaforma a 32 bit). Puoi provare "x86_64-linux-gnu" per una piattaforma a 64 bit.

Per i curiosi - il motivo per cui lo costruisco in questo modo è perché il processo di compilazione di gcc aveva un bug che impediva la ricostruzione nella directory dei sorgenti. Non so se questo errore esiste ancora (l'ho incontrato l'ultima volta in 4.8.0), ma l'unica soluzione era costruire esplicitamente in una directory separata se avessi mai voluto ricostruire.

[EDIT: esegue l'installazione delle dipendenze suggerite sopra da GAD3R]

#!/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"
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.