Eu instalei o gcc-3.3 / g ++ - 3.3 no ubuntu 11.04, que já tem o gcc / g ++ - 4.4. Portanto, em meu sistema tanto o gcc-3.3 quanto o 4.4 estão disponíveis. Consigo chamar os dois compiladores conforme desejo. Se eu apenas chamar o comando gcc
, gcc-4.4 será chamado. Para chamar gcc-3.3, preciso usar o comando gcc-3.3
.
Como posso alterar o compilador padrão como gcc-3.3? Quando eu executar o comando gcc
ele deve chamar o gcc-3.3 e não o gcc-4.4.
Além disso, como posso alterar a variável CXX em um arquivo make para gcc-3.3? Desejo alterar um local global comum no sistema em vez de alterar todos os arquivos make.
CXX=gcc-3.3
ouexport CXX=gcc-3.3
e,make
entretanto, quando você o alterou globalmente,update-alternatives
ele já usará o gcc-3.3 e isso não é necessário.Respostas:
Como @Tommy sugeriu, você deve usar
update-alternatives
.Atribui valores a cada software de uma família, de forma que define a ordem em que os aplicativos serão chamados.
É usado para manter diferentes versões do mesmo software em um sistema. No seu caso, você poderá usar várias declinações de
gcc
, e uma será favorecida.Para descobrir as prioridades atuais do gcc, digite o comando apontado pelo comentário de @tripleee:
Agora, observe a prioridade atribuída a
gcc-4.4
porque você precisará dar uma prioridade mais alta agcc-3.3
.Para definir suas alternativas, você deve ter algo assim (assumindo que sua
gcc
instalação está localizada em/usr/bin/gcc-3.3
egcc-4.4
a prioridade de é inferior a 50) :--editar--
Por fim, você também pode usar a interface interativa do
update-alternatives
para alternar facilmente entre as versões. Digiteupdate-alternatives --config gcc
para ser solicitado a escolher a versão do gcc que deseja usar entre as instaladas.--editar 2 -
Agora, para corrigir a variável de ambiente CXX em todo o sistema, você precisa colocar a linha indicada por @ DipSwitch's em seu
.bashrc
arquivo (isso aplicará a alteração apenas para seu usuário, que é mais seguro em minha opinião):fonte
cc
:root@host:/root# update-alternatives --get-selections | grep '/usr/bin/gcc' cc auto /usr/bin/gcc
update-alternatives --query gcc
, o que pode não funcionar, por exemplo, em um script de provisionamento automatizado. Além disso, como isso pode ser tornado agnóstico em relação à plataforma?Aqui está um exemplo completo da resposta de jHackTheRipper para a multidão de TL; DR. :-) Neste caso, eu queria executar o g ++ - 4.5 em um sistema Ubuntu cujo padrão é 4.6. Como
root
:Aqui, 4.6 ainda é o padrão (também conhecido como "modo automático"), mas eu alterno explicitamente para 4.5 temporariamente (modo manual). Para voltar a 4.6:
(Observe o uso de em
cpp-bin
vez de apenascpp
. O Ubuntu já tem umacpp
alternativa com um link mestre de/lib/cpp
. Renomear esse link removeria o/lib/cpp
link, o que poderia quebrar os scripts.)fonte
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
g++-6
pacote?__builtin
coisas indefinidas .Esta é uma ótima descrição e instrução passo a passo de como criar e gerenciar alternativas mestre e escravo (gcc e g ++).
Em breve é:
fonte
Entre 4,8 e 6 com todos
--slaves
:e
Alterne entre eles com
update-alternatives --config gcc
.fonte
cc
ec++
, o que causa erro: o cc alternativo não pode ser escravo do gcc: é uma alternativa mestreAgora, há gcc-4.9 disponível para Ubuntu / precise.
Crie um grupo de alternativas de compilador em que o compilador da distro tenha uma prioridade mais alta:
NOTA: a versão g ++ é alterada automaticamente com uma troca de versão gcc. O cpp-bin deve ser feito separadamente, pois existe uma alternativa mestre "cpp".
Liste as alternativas de compilador disponíveis:
Para selecionar manualmente a versão 4.9 do gcc, g ++ e cpp, faça:
Verifique as versões do compilador:
Restaure as configurações do compilador da distro (aqui: de volta à v4.6):
fonte
Eu encontrei esse problema ao tentar instalar um novo compilador Clang. Acontece que os mantenedores do Debian e do LLVM concordam que o sistema de alternativas deve ser usado para alternativas, NÃO para controle de versão .
A solução que eles propõem é mais ou menos assim:
PATH=/usr/lib/llvm-3.7/bin:$PATH
onde /usr/lib/llvm-3.7/bin é um diretório que foi criado pelo pacote llvm-3.7 e que contém todas as ferramentas com seus nomes não sufixados. Com isso, llvm-config (versão 3.7) aparece com seu nome simples em seu PATH. Não há necessidade de mexer com links simbólicos, nem chamar o llvm-config-3.7 que foi instalado em / usr / bin.
Além disso, verifique se há um pacote chamado llvm-defaults (ou gcc-defaults), que pode oferecer outra maneira de fazer isso (eu não usei).
fonte
Caso você queira uma maneira mais rápida (mas ainda muito limpa) de alcançá-lo para um propósito pessoal (por exemplo, se você deseja construir um projeto específico com alguns requisitos fortes relativos à versão do compilador), basta seguir os seguintes passos:
echo $PATH
e procure um diretório pessoal de alta prioridade (no meu caso, eu tenho~/.local/bin
);Por exemplo:
Claro, isso funcionará para um único usuário (não é uma solução para todo o sistema), mas por outro lado, não gosto de alterar muitas coisas na minha instalação.
fonte
Usei apenas as linhas abaixo e funcionou. Eu só queria compilar
VirtualBox
eVMWare WorkStation
usandokernel 4.8.10
onUbuntu 14.04
. Inicialmente, a maioria das coisas não estava funcionando, por exemplo, gráficos e rede. Tive a sorte de terVMWare workstation
solicitadogcc 6.2.0
. Não consegui iniciar meuGenymotion Android emulators
porque o virtualbox estava inativo. Postará os resultados mais tarde, se necessário.fonte