web-dev-qa-db-fra.com

Téléchargé g ++ 4.8 à partir du PPA mais vous ne pouvez pas le définir par défaut?

J'ai téléchargé g ++ 4.8 sur Ubuntu 12.10 en faisant:

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

mais quand je fais:

Sudo update-alternatives --config g++

pour changer de version de g ++, il est écrit:

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

Cependant si je le fais:

g++ --version

ça dit:

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.

Comment définir mon installation g ++ 4.8 comme g ++ par défaut?

14
user997112

Tout d’abord, vous devez découvrir où sont vos fichiers binaires 4.8 de tous les outils:

$ 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

Nous avons donc tous nos fichiers binaires. Voyons maintenant si des liens symboliques sont disponibles pour ces fichiers binaires:

$ 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

Comme on peut le constater, seuls cppname__, g++ et gccont des liens symboliques. Nous avons deux options ici.

Symlinking

Nous remplaçons les liens symboliques par les nôtres, en supprimant d’abord les données réelles:

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

Puis créer la nôtre

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++

Pour revenir en arrière, utilisez les mêmes commandes mais avec 4.7 ou 4.6 à la place

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++
10
Braiam

Vous devez laisser update-alternatives savoir que vous avez 2 compilateurs C++, créer un enregistrement pour chacun, puis configurer celui que vous souhaitez utiliser. Ceci est fait avec ce qui suit:

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++ 

À partir de ce moment, la seule chose nécessaire lors du changement de compilateur est la commande suivante:

Sudo update-alternatives --config g++

Voir man update-alternatives pour plus d'informations.

Source: Comment utiliser plusieurs instances de gcc?

16
Radu Rădeanu

C'est la grande description et des instructions pas à pas pour créer et gérer des alternatives maître et esclave (gcc et g ++).

Bientôt, c'est

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
8
Anton K