J'ai installé gcc-3.3 / g ++ - 3.3 sur ubuntu 11.04 qui a déjà gcc / g ++ - 4.4. Donc, dans mon système, gcc-3.3 et 4.4 sont disponibles. Je peux appeler les deux compilateurs comme je veux. Si j'appelle simplement la commande, gcc
gcc-4.4 sera appelé. Pour appeler gcc-3.3, je dois utiliser la commande gcc-3.3
.
Comment puis-je changer le compilateur par défaut en gcc-3.3? Lorsque j'exécute la commande, gcc
il doit appeler gcc-3.3 et non gcc-4.4.
De plus, comment puis-je changer la variable CXX dans un fichier make en gcc-3.3? Je souhaite changer une place globale commune dans le système au lieu de changer tous les fichiers make.
CXX=gcc-3.3
ouexport CXX=gcc-3.3
etmake
cependant, lorsque vous l'avez modifié globalement,update-alternatives
il utilisera déjà gcc-3.3 et ce n'est pas nécessaire.Réponses:
Comme @Tommy l'a suggéré, vous devriez utiliser
update-alternatives
.Il attribue des valeurs à chaque logiciel d'une famille, afin de définir l'ordre dans lequel les applications seront appelées.
Il est utilisé pour maintenir différentes versions du même logiciel sur un système. Dans votre cas, vous pourrez utiliser plusieurs déclinaisons de
gcc
, et une sera privilégiée.Pour déterminer les priorités actuelles de gcc, tapez la commande indiquée par le commentaire de @ tripleee:
Maintenant, notez la priorité attribuée à
gcc-4.4
car vous devrez en donner une plus élevéegcc-3.3
.Pour définir vos alternatives, vous devriez avoir quelque chose comme ceci (en supposant que votre
gcc
installation se trouve à/usr/bin/gcc-3.3
, et quegcc-4.4
la priorité soit inférieure à 50) :--Éditer--
Enfin, vous pouvez également utiliser l'interface interactive de
update-alternatives
pour basculer facilement entre les versions. Tapezupdate-alternatives --config gcc
pour être invité à choisir la version de gcc que vous souhaitez utiliser parmi celles installées.--edit 2 -
Maintenant, pour corriger la variable d'environnement CXX à l'échelle du système, vous devez mettre la ligne indiquée par @ DipSwitch's dans votre
.bashrc
fichier (cela n'appliquera le changement que pour votre utilisateur, ce qui est plus sûr à mon avis):la source
cc
:root@host:/root# update-alternatives --get-selections | grep '/usr/bin/gcc' cc auto /usr/bin/gcc
update-alternatives --query gcc
, ce qui peut ne pas fonctionner, par exemple dans un script d'approvisionnement automatisé. En outre, comment cela peut-il être rendu indépendant de la plate-forme?Voici un exemple complet de la réponse de jHackTheRipper pour la foule TL; DR. :-) Dans ce cas, je voulais exécuter g ++ - 4.5 sur un système Ubuntu dont la valeur par défaut est 4.6. Comme
root
:Ici, 4.6 est toujours la valeur par défaut (aka "mode auto"), mais je passe explicitement en 4.5 temporairement (mode manuel). Pour revenir à 4.6:
(Notez l'utilisation de
cpp-bin
au lieu de justecpp
. Ubuntu a déjà unecpp
alternative avec un lien principal de/lib/cpp
. Renommer ce lien supprimerait le/lib/cpp
lien, ce qui pourrait casser les scripts.)la source
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
g++-6
paquet?__builtin
éléments non définis .Ceci est la grande description et les instructions étape par étape pour créer et gérer des alternatives maître et esclave (gcc et g ++).
En bref c'est:
la source
Entre 4,8 et 6 avec tous
--slaves
:et
Changez entre eux avec
update-alternatives --config gcc
.la source
cc
et lesc++
lignes, ce qui provoque une erreur: l'alternative cc ne peut pas être esclave de gcc: c'est une alternative principaleDésormais, gcc-4.9 est disponible pour Ubuntu / precise.
Créez un groupe d'alternatives au compilateur où le compilateur de distribution a une priorité plus élevée:
REMARQUE: la version g ++ est modifiée automatiquement avec un commutateur de version gcc. cpp-bin doit être fait séparément car il existe une alternative maître "cpp".
Liste des alternatives de compilateur disponibles:
Pour sélectionner manuellement la version 4.9 de gcc, g ++ et cpp, procédez comme suit:
Vérifiez les versions du compilateur:
Restaurez les paramètres du compilateur de distribution (ici: retour à la v4.6):
la source
J'ai trouvé ce problème en essayant d'installer un nouveau compilateur clang. Il s'avère que les responsables de Debian et de LLVM conviennent que le système d'alternatives doit être utilisé pour des alternatives, PAS pour le contrôle de version .
La solution qu'ils proposent est quelque chose comme ceci:
PATH=/usr/lib/llvm-3.7/bin:$PATH
où /usr/lib/llvm-3.7/bin est un répertoire qui a été créé par le paquet llvm-3.7, et qui contient tous les outils avec leurs noms non suffixés. Avec cela, llvm-config (version 3.7) apparaît avec son nom clair dans votre PATH. Pas besoin de se faufiler avec les liens symboliques, ni d'appeler le llvm-config-3.7 qui a été installé dans / usr / bin.
Recherchez également un paquet nommé llvm-defaults (ou gcc-defaults), qui pourrait offrir un autre moyen de le faire (je ne l'ai pas utilisé).
la source
Si vous souhaitez un moyen plus rapide (mais toujours très propre) de le réaliser à des fins personnelles (par exemple, si vous souhaitez créer un projet spécifique ayant de fortes exigences concernant la version du compilateur), suivez simplement les étapes suivantes:
echo $PATH
et recherchez un répertoire personnel ayant une très haute priorité (dans mon cas, je l'ai~/.local/bin
);Par exemple:
Bien sûr, cela fonctionnera pour un seul utilisateur (ce n'est pas une solution à l'échelle du système), mais d'un autre côté je n'aime pas changer trop de choses dans mon installation.
la source
J'ai utilisé uniquement les lignes ci-dessous et cela a fonctionné. Je voulais juste compiler
VirtualBox
et enVMWare WorkStation
utilisantkernel 4.8.10
leUbuntu 14.04
. Au départ, la plupart des choses ne fonctionnaient pas, par exemple les graphiques et la mise en réseau. J'ai eu la chance d'avoirVMWare workstation
demandégcc 6.2.0
. Je n'ai pas pu démarrer maGenymotion Android emulators
car virtualbox était en panne. Publiera les résultats plus tard si nécessaire.la source