Atualizando para o último gcc e g ++ no Ubuntu 16.04

11

Recentemente, tentei fazer o downgrade para o gcc 4.7, pois um código cfd em que eu estava trabalhando não compilava com a versão mais recente do gcc. Mas depois de muitos erros e o código ainda não está compilando, desisti e gostaria de voltar aos mais recentes compiladores gcc e g ++, no entanto, parece que posso ter estragado alguma coisa.

Quando eu faço:

sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++
sudo apt-get install gcc-6.2 g++-6.2

ou mesmo gcc-5.1 g ++ - 5.1, nesse caso, ele me dá o seguinte erro

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-6.2
E: Couldn't find any package by glob 'gcc-6.2'
E: Couldn't find any package by regex 'gcc-6.2'
E: Unable to locate package g++-6.2
E: Couldn't find any package by glob 'g++-6.2'
E: Couldn't find any package by regex 'g++-6.2'

e eu também tentei fazer isso antes

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

mas não parece funcionar. Finalmente, quando eu apenas faço

sudo apt-get install gcc

diz

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).

Sei que ainda preciso instalar e configurar alternativas, mas isso não funciona da seguinte maneira

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5.3 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5.3 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

Desculpe, isso acabou muito tempo e por favor me avise se você precisar de mais informações. Obrigado!

EDIT: Na verdade, consegui fazê-lo alterando gcc-5.3 para gcc-5 no código acima, pois parecia ser o que é chamado em usr / bin. Vou mantê-lo para referência futura se alguém enfrentar o mesmo problema.

thephysicsguy
fonte
2
O AFAIK gcc e g ++ não são instalados como alternativas de atualização por padrão - em vez disso, os pacotes gcce g++dependency instalam links diretos para as dependências padrão, como /usr/bin/g++ -> g++-5. Você já tentou simplesmente reinstalar os pacotes gcce g++?
steeldriver
Uma maneira de evitar esse tipo de problema é criar uma VM e instalar a versão antiga do compilador.
NZD
Esse hotfix pode ser corrigido na instalação Lendo listas de pacotes ... Concluído Criando árvore de dependências Lendo informações sobre o estado ... Concluído O gcc já é a versão mais recente (4: 7.3.0-3ubuntu2.1). 0 atualizado, 0 recém-instalado, 0 para remover e 36 não atualizado.
JOC KERS

Respostas:

5

Execute os seguintes comandos em sequência. Eu estava recebendo o mesmo erro. Isso funcionou para mim.

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-snapshot
sudo apt-get install gcc-6 g++-6
Milind
fonte
9
Por que sudo apt-get updatefoi executado três vezes em vez da primeira vez? Em particular, por que após a última instalação do pacote?
Eliah Kagan
O que o gcc-snapshot faz exatamente? Como posso remover a versão anterior do gcc (4.8.4)?
abunickabhi 4/09/19
0

A atualização apt-get deve ser executada para que seu computador acesse o repositório que acabou de ser adicionado, disponibilizando seu conteúdo para você. Se você não executá-lo, seu computador não está ciente de que possui as informações de repositórios disponíveis.

def
fonte