Como usar o GCC 4.7 no lugar de 4.6?


8

Então, eu estou trabalhando em um projeto e queria usar alguns recursos do C11 para C. Para usar esses recursos, o GCC 4.7 é necessário, então fui para o synaptic e procurei o 4.7, e encontrei os pacotes gcc-4.7-base para instalei [1].

Portanto, agora que o gcc-4.7-base está instalado, esperava poder usar o 4.7, mas não, quando o faço gcc --versionainda mostra 4.6.3 ainda mais, quando tento chamar diretamente 4.7 (via /usr/bin/gcc-4.7), ele não existe, embora gcc-4.6exista um executável.

Como "ativo" o GCC 4.7? Eu li aqui , você faz algumas coisas loucas update-alternatives, mas não funciona para mim, pois o gcc-4.7executável não existe na minha máquina.

Notas: 1. Eu também vi o gcc-4.6-base, então pensei em desinstalá-lo, mas o synaptic tentou remover todos os pacotes que eu havia instalado e instalar um tempo de execução Java, portanto, por razões óbvias, decidi não removê-lo.

Respostas:


13

O seguinte funcionou para mim.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --config gcc

Fonte para referência


Eu não acho que isso responda à pergunta, já que o OP disse especificamente que a update-alternativesrota não funcionaria para eles, pois eles não tinham o binário gcc-4.7 disponível. Na verdade, tentando seguir as instruções deste resposta após a instalação resultados gcc-4.7-base no erro:update-alternatives: error: alternative path /usr/bin/gcc-4.7 doesn't exist.
waldyrious

0

O gccbinário está no gcc-X.Ypacote, não gcc-X.Y-base. O último é uma dependência de um gcc-X.You de um libstdc++.

Basicamente, você deve simplesmente instalar gcc-4.7e, em seguida, chamá-lo a partir gcc-4.7do seu makefile ou usá install-alternatives-lo para torná-lo o padrão.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.