Baixou g ++ 4.8 do PPA, mas não pode configurá-lo como padrão?

13

Eu baixei g ++ 4.8 no Ubuntu 12.10 fazendo:

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

mas quando eu faço:

sudo update-alternatives --config g++

para mudar as versões do g ++ diz:

update-alternatives: error: no alternatives for g++.

No entanto, se eu fizer isso:

g++ --version

diz:

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Como defino minha instalação do g ++ 4.8 para ser o padrão g ++?

    
por user997112 06.11.2013 / 23:34

3 respostas

10

Em primeiro lugar, você precisa descobrir onde estão os seus binários de todas as ferramentas:

$ which gcc-4.8
/usr/bin/gcc-4.8
$ which g++-4.8
/usr/bin/g++-4.8
$ ls /usr/bin/*-4.8
/usr/bin/cpp-4.8         /usr/bin/x86_64-linux-gnu-cpp-4.8
/usr/bin/g++-4.8         /usr/bin/x86_64-linux-gnu-g++-4.8
/usr/bin/gcc-4.8         /usr/bin/x86_64-linux-gnu-gcc-4.8
/usr/bin/gcc-ar-4.8      /usr/bin/x86_64-linux-gnu-gcc-ar-4.8
/usr/bin/gcc-nm-4.8      /usr/bin/x86_64-linux-gnu-gcc-nm-4.8
/usr/bin/gcc-ranlib-4.8  /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.8
/usr/bin/gcov-4.8

Então, temos todos os nossos binários, agora vamos ver se alguns links simbólicos estão disponíveis para tais binários:

$ cd /usr/bin
$ ls -l gcc* cpp g++
lrwxrwxrwx 1 root root      7 sep 18 14:02 cpp -> cpp-4.7
lrwxrwxrwx 1 root root      7 abr 22  2013 g++ -> g++-4.7
lrwxrwxrwx 1 root root      7 sep 18 14:02 gcc -> gcc-4.7

Como podemos ver, apenas cpp , g++ e gcc tem links simbólicos. Nós temos duas opções aqui.

Symlinking

Substituímos os links simbólicos pelos nossos, removendo os dados reais primeiro:

sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++

Em seguida, criar o nosso

sudo ln -s /usr/bin/cpp-4.8 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

Para voltar a usar os mesmos comandos, mas com 4,7 ou 4,6 em vez

sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/cpp-4.7 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++
    
por Braiam 07.11.2013 / 00:26
16

Você precisa deixar update-alternatives saber que você tem 2 compiladores de C ++, criar um registro para cada um deles e, em seguida, configurar qual deles você deseja usar. Isso é feito com o seguinte:

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6.3 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40
sudo update-alternatives --config g++ 

Deste ponto em diante, a única coisa necessária ao trocar de compiladores é este comando:

sudo update-alternatives --config g++

Veja man update-alternatives para mais informações.

Fonte: Como usar várias instâncias do gcc?

    
por Radu Rădeanu 07.11.2013 / 01:06
8

Esta é a grande descrição e instruções passo-a-passo sobre como criar e gerenciar alternativas mestre e escravo (gcc e g ++).

Logo, é

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 
sudo update-alternatives --config gcc
    
por Anton K 13.03.2014 / 00:13