Como uso o último GCC no Ubuntu?

132

Quero compilar meu programa com a versão mais recente do gcc.

Ubuntu 14.04 vem com gcc 4.8.2, no entanto há 4.9.0 disponível, além disso, eu vejo que ele está disponível como um pacote: gcc-4.9. Eu tentei instalá-lo

sudo apt-get install gcc-4.9

mas diz

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.

Parece que ele já está instalado, mas não como o padrão? Como utilizá-lo para criar meu programa?

Nickolai Leschov
fonte
Se você deseja instalar gcc-4.8, você precisa usar sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Todos estão em repo principal Ubuntu .
1
@Dumindu Mas como eu uso gcc-4.9especificamente?
Nickolai Leschov
Desinstale outros e instale 4.9.
2
@Dumindu Espere, você acabou de me dizer para fazer o que eu fiz? Não está funcionando.
Nickolai Leschov
alterne para usuário root: sudo su -/usr/binpara executar ls -l gcc*e publique sua saída. então eu vou postar sua resposta.
αғsнιη

Respostas:

196

A melhor maneira de instalar corretamente o gcc-4.9 e configurá-lo como sua versão padrão do gcc, use:

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

O --slave, with g++, fará com g++que seja alternado junto com gcc, para a mesma versão. Mas, neste ponto, o gcc-4.9 será sua única versão configurada update-alternatives; portanto, adicione 4.8 a update-alternatives, para que exista uma alternativa, usando:

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

Em seguida, você pode verificar qual está definido e mudar de um lado para o outro usando:

sudo update-alternatives --config gcc

NOTA: Você pode pular a instalação do repositório PPA e usar apenas, /usr/bin/gcc-4.9-basemas eu prefiro usar as novas cadeias de ferramentas atualizadas.


Para 5.X GCC ou 6, os pacotes (e, correspondentemente, os comandos) são apenas chamado gcc-5, gcc-6etc. Isto é devido à mudança no esquema de versão do GCC , onde 5.1 é a primeira versão GCC 5, e futuras versões 5.X são para correções de bugs .

SudoSURoot
fonte
Obrigado pela edição @muru ... como eu disse abaixo, fiquei acordada por cerca de 3 dias muito cansada e as alternativas de atualização exigem sudo e acho que esqueci o (-) antes do escravo. :) Então, obrigado.
SudoSURoot
Tentesudo apt-get -f install
SudoSURoot
4
Isso funciona perfeitamente. Além disso, substituir 5em para 4.9obter GCC 5 trabalhando em Ubuntu. (Minha equipe de desenvolvimento agora executa os itens 4.9 e 5 juntos, seguindo seu método.) Obrigado e +1!
CodeMouse92
2
@hwat Deve funcionar por gcc-6enquanto.
precisa saber é o seguinte
1
Isso me ajudou várias vezes, mas eu sempre esqueço - certifique-se de aplicar a mesma solução a outros utilitários na coleção do compilador GNU que você pode usar! O GCOV, por exemplo, reclamará de uma incompatibilidade de versão, se não houver, possivelmente produzindo dados incorretos.
Toby
23

Use o PPA do Toolchain Test Builds :

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

Eu não acho que o GCC 4.9 esteja totalmente disponível para o Ubuntu 14.04 ainda. O pacote base ( gcc-4.9-base ) e o compilador GCC Go 4.9 ( gccgo-4.9 ) estão disponíveis, mas os outros frontends não. Não sei porque.

muru
fonte
1
@SudoSURoot, pode ou não ser definido como padrão, essa não é minha preocupação (existem outras postagens que lidam com isso). No entanto, os frontends C e C ++ do GCC 4.9 podem ser instalados no 14.04 apenas a partir dos repositórios oficiais, e são patentemente falsos, pois o gcc-4.9-basepacote não contém e não conterá um front-end binário.
Muni
Você está correto sobre o pacote base. Como você verá na minha resposta, usei o PPA. Publiquei o comentário primeiro e depois respondi a pergunta como indicado, a partir da pergunta ... Porque simplesmente adicionar o PPA e instalar o 4.9 não o habilita, o que é necessário para "usar o gcc 4.9". Eu deveria ter excluído o comentário depois de responder à pergunta. Peço desculpas. Minha resposta é o que deve ser focado. Tirei conclusões precipitadas ... e comentei rapidamente. Na verdade, sou bastante novo com o uso do 14.04, desde que recebi um servidor dedicado. Eu estou disposto a garantir que eu não votei e vou consertar se eu fizesse.
SudoSURoot
@SudoSURoot certo. Mesmo assim, a menos que o OP tenha um problema com a chamada gcc-4.9ou em g++-4.9vez de gccou g++, continuarei sem atualizar as alternativas.
muru
Eu compreendo totalmente. Porém, eu construo sistemas Android, que usam muitos $ (qual gcc) e $ (qual g ++) etc ... Então, eu sempre tenho que ter os padrões definidos para a versão que eu quero usar. Alguns dos códigos do meu kernel não eram compilados com o host gcc-4.8, então tive que atualizar. Acabei de repetir o que funcionou para mim. Obrigado por me lembrar ... Como eu disse na minha edição, no último comentário, posso ter votado negativamente prematuramente, se for o caso, vou consertar. Eu estava em pé por 2 ou 3 dias trabalhando no meu código-fonte do kernel quando os publiquei. Todo mundo tem seu jeito ... Acabei de encontrar a mais completa minha resposta, menos perguntas eu g
SudoSURoot 14/02
O pacote mais recente é o gcc-7 ATM
Elder Geek
5

Ubuntu 16.04 e posterior

Você já pode instalar o gcc 7.0 no Ubuntu 18.04 a partir dos repositórios padrão. Para instalar o gcc-7 no Ubuntu 17.10, 18.04 e 18.10, abra o terminal e digite:

sudo apt install gcc-7 

Para instalar o gcc-8 no Ubuntu 18.04 e posterior, abra o terminal e digite:

sudo apt install gcc-8

Para instalar o gcc-9 no Ubuntu 19.04 e posterior, abra o terminal e digite:

sudo apt install gcc-9

Você pode instalar o gcc-7 no Ubuntu 16.04 no ppa: jonathonf / gcc-7.1.

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

Você pode instalar o gcc-8 no Ubuntu 16.04 no ppa: jonathonf / gcc-8.0.

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

Para chamar o gcc 4.9 especificamente, use gcc-4.9no prompt de comando.

Todas as versões do gcc instaladas podem ser chamadas individualmente, adicionando um hífen e o número da versão no final de gcc. No seu caso, gcc-4.8e gcc-4.9deve estar disponível. Em um terminal, digite gcc-(observe o hífen) e a guia push duas vezes para ver se há outras versões instaladas.

Observe que o gcc padrão provavelmente ainda é 4.8. (Use gcc -vpara verificar isso.) Infelizmente, alterar o padrão não é trivial se você instalou o gcc-4.9 a partir do repositório padrão, pois não adicionou uma entrada de alternativas de atualização. Se você estiver interessado em como alterar o padrão, consulte as respostas a esta pergunta .

holocronweaver
fonte
Como faço para que um projeto confie no makefile e possivelmente em outras infraestruturas de compilação, ao gcc-4.9invés de gcc?
Nickolai Leschov
1
A melhor maneira de garantir que o gcc-4.9 seja usado nos sistemas de compilação é alterando o gcc padrão. Siga o link que forneci na minha resposta para saber como fazer isso. Como alternativa, você pode criar um link simbólico, embora eu recomende isso, exceto como último recurso, pois o gerenciador de pacotes pode reclamar ao atualizar o gcc. Se você insistir: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Para reverter para o padrão gcc-4.8, substitua gcc-4.9 por gcc-4.8. Você pode ter que fazer isso com o g ++ e outros compiladores GNU também.
21449 holocronweaver
O GCC 4.9 não está disponível no Ubuntu 14.04 (exceto o compilador GCC Go ), portanto, embora essa resposta provavelmente funcione no Ubuntu 14.10, não ajuda agora. :-)
Søren Løvborg
Na verdade, ele está disponível no Ubuntu 14.04, embora possa ter sido um erro: packages.ubuntu.com/trusty/gcc-4.9-base . Uso-o desde abril.
Holocronweaver
0

OK, vamos fazer o seguinte:

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

Todas as perguntas:

Ciro Santilli adicionou uma nova foto
fonte