Como instalar a última versão estável do GCC no Linux Mint?

8

Quero instalar a versão mais recente do GCC (coleção de compilador GNU) no Linux Mint 17.3. Atualmente g++ --versionretorna 4.8.4, enquanto a última versão estável é 5.3.

becko
fonte
O backport de uma versão mais recente geralmente é possível, mas também não é trivial. Uma alternativa é uma instalação local da fonte. Do ponto de vista da limpeza, é preferível um backport.
Faheem Mitha 27/03
Existe outra maneira de instalá-lo, talvez não como um pacote?
Becko
Sim, como eu disse acima, uma instalação local é uma opção. Mas você precisa ter cuidado para desinstalar depois. Construir um pacote é um processo mais difícil, mas mais fácil e limpo do ponto de vista da manutenção.
Faheem Mitha 27/03
A versão mais recente do Gcc, 9.2, é distribuída como código-fonte. Se este comentário não for excluído pelo moderador, você poderá encontrar tempo para ler o howto no site original gcc.gnu.org . Resposta anterior foi excluída sem motivo válido IMHO.
bbaassssiiee

Respostas:

8

Seu Linux Mint vem pré-instalado com um pacote GCC. Então, primeiro eu recomendaria que você verifique se o pacote já está presente no seu sistema digitando o seguinte comando no terminal.

apt-cache search gcc

Caso você não esteja tendo nenhum desses pacotes, use o seguinte comando no terminal e adicione o seguinte repositório:

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

então use o próximo comando:

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

Sempre há algo básico que devemos aprender; tome isso como pré-requisito antes do linux .. Aprenda a pesquisar no Google ... tente fazer pesquisas mais difíceis ...

Vinood NK Maheshwari
fonte
Por que eu gostaria de instalar g++-4.7, que é uma versão inferior à g++-4.8que eu já tenho? Quero atualizar, não fazer o downgrade.
Becko
que foi de 4,8 e você precisa procurar antes de mais recente pacote disponível com apt-cache search gcc i lhe deu a lógica mas realmente você rebaixou os meus pontos gr8
Vinood NK Maheshwari
No momento, essa resposta parece incoerente. Explique por que o OP gostaria de instalar a v4.7 em vez da v5 (de preferência sem clichês sobre as virtudes do trabalho árduo).
agc
substitua 4.7 por 4.9 e funciona.
Algoman
3

baixe a versão mais recente do gcc

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

use o comando: tar -xjfpara descompactar o arquivo

Digite o diretório que você descompactou agora, $HOME/Downloads/gcc-5.3.0digite e digite o comando:

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

Instalação de dependência: o build GCC requer GMP4.2 +, MPFR 2.4.0+ e MPC 0.8.0+ e build essential

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

instalar um compilador C ++

sudo apt-get install g++

Próximo tipo:

make 
sudo make install

Edite se você ainda receber a mensagem de erro como "zlib.h não encontrado!" você pode fazer o seguinte para corrigi-lo:

apt-get install zlib1g-dev
GAD3R
fonte
Se você tiver algum erro, por favor, comente. Eu atualizarei.
GAD3R 27/03
Por que --disable-multilib?
Becko
Erro:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
becko 27/03
O link está morto.
einpoklum
1

Não sei bem o que deve ser o último, porque sempre há novidades. Mas você pode instalar qualquer um deles dessa maneira.

Tome o gcc-8 como exemplo:

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 você quiser selecionar gcc-8 / g ++ - 8 com prioridade mais alta (20 neste caso), também precisará

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

Verdade seja dita, eu sou simplesmente com preguiça de sair do 17,3 - funciona para mim. Dito isto, eu ainda precisava de um novo GCC. Para compilá-lo repetidamente para diferentes destinos, tenho um script bash (veja abaixo) que modifico e executo (estou escrevendo meu próprio SO de brinquedo, portanto, tenho que usar um gcc especialmente gerado).

Altere os diretórios no script abaixo para corresponder aos diretórios que você possui. Eu mantenho a versão compilada em meu próprio diretório para que eu possa alternar facilmente entre minha versão compilada e a versão do sistema. Eu sugiro que você faça o mesmo. Você precisa baixar o binutils-2.23.2, bem como a versão do gcc que você está interessado (estou usando o 7.1.0 abaixo). Coloque-os em um diretório ~ / contrib junto com o script abaixo.

Você também pode alterar a linha "--enabled-languages ​​= c" para "--enabled-languages ​​= c, c ++, objc" - meu projeto precisa apenas de C. Outra alteração seria o valor de PLATAFORMA. Eu uso o "i686-elf", mas isso não funcionará para você (eu mudei abaixo para algo que funcionará para a plataforma de 32 bits). Você pode tentar "x86_64-linux-gnu" para uma plataforma de 64 bits.

Para os curiosos - a razão pela qual construí-lo dessa maneira é porque o processo de construção do gcc costumava ter um bug que impedia a reconstrução no diretório de origem. Não sei se esse bug ainda existe (eu o encontrei pela última vez na 4.8.0), mas a única solução alternativa foi criar explicitamente em um diretório separado, se você quiser reconstruir.

[EDIT: Execute a instalação das dependências sugeridas acima pelo 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"
Lelanthran
fonte