Ich habe gcc-3.3 / g ++ - 3.3 auf Ubuntu 11.04 installiert, das bereits gcc / g ++ - 4.4 enthält. In meinem System sind also sowohl gcc-3.3 als auch 4.4 verfügbar. Ich kann beide Compiler aufrufen, wie ich möchte. Wenn ich nur den Befehl gcc
aufrufe, wird gcc-4.4 aufgerufen. Um gcc-3.3 aufzurufen, muss ich den Befehl verwenden gcc-3.3
.
Wie kann ich den Standard-Compiler als gcc-3.3 ändern? Wenn ich den Befehl ausführe gcc
, sollte er gcc-3.3 und nicht gcc-4.4 aufrufen.
Wie kann ich außerdem die Variable CXX in einer make-Datei in gcc-3.3 ändern? Ich möchte einen gemeinsamen globalen Ort im System ändern, anstatt alle make-Dateien zu ändern.
CXX=gcc-3.3
oderexport CXX=gcc-3.3
undmake
wenn Sie es dann globalupdate-alternatives
damit ändern , wird bereits gcc-3.3 verwendet, und dies ist nicht erforderlich.Antworten:
Wie @Tommy vorgeschlagen hat, sollten Sie verwenden
update-alternatives
.Es weist jeder Software einer Familie Werte zu, sodass die Reihenfolge definiert wird, in der die Anwendungen aufgerufen werden.
Es wird verwendet, um verschiedene Versionen derselben Software auf einem System zu verwalten. In Ihrem Fall können Sie mehrere Deklinationen von verwenden
gcc
, und eine wird bevorzugt.Um die aktuellen Prioritäten von gcc herauszufinden, geben Sie den Befehl ein, auf den @ Tripleees Kommentar hinweist:
Beachten Sie nun die Priorität, die zugewiesen wird,
gcc-4.4
da Sie eine höhere Priorität vergeben müssengcc-3.3
.Um Ihre Alternativen festzulegen, sollten Sie Folgendes haben (vorausgesetzt, Ihre
gcc
Installation befindet sich bei/usr/bin/gcc-3.3
undgcc-4.4
die Priorität liegt unter 50) :--bearbeiten--
Schließlich können Sie auch die interaktive Oberfläche von verwenden,
update-alternatives
um einfach zwischen Versionen zu wechseln. Geben Sie einupdate-alternatives --config gcc
, um aufgefordert zu werden, die gcc-Version auszuwählen, die Sie unter den installierten verwenden möchten.--edit 2 -
Um die CXX-Umgebungsvariable systemweit zu korrigieren, müssen Sie die durch @ DipSwitch angegebene Zeile in Ihre
.bashrc
Datei einfügen (dies gilt nur für Ihren Benutzer, was meiner Meinung nach sicherer ist):quelle
cc
:root@host:/root# update-alternatives --get-selections | grep '/usr/bin/gcc' cc auto /usr/bin/gcc
update-alternatives --query gcc
, der möglicherweise nicht funktioniert, z. B. in einem automatisierten Bereitstellungsskript. Wie kann dies plattformunabhängig gemacht werden?Hier ist ein vollständiges Beispiel für die Antwort von jHackTheRipper für die TL; DR-Menge. :-) In diesem Fall wollte ich g ++ - 4.5 auf einem Ubuntu-System ausführen, das standardmäßig 4.6 ist. Als
root
:Hier ist 4.6 immer noch die Standardeinstellung (auch bekannt als "Auto-Modus"), aber ich wechsle explizit vorübergehend zu 4.5 (manueller Modus). Um zu 4.6 zurückzukehren:
(Beachten Sie die Verwendung von
cpp-bin
statt nurcpp
. Ubuntu hat bereits einecpp
Alternative mit einem Master-Link von/lib/cpp
. Das Umbenennen dieses Links würde den/lib/cpp
Link entfernen , wodurch Skripte beschädigt werden könnten.)quelle
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
g++-6
Pakets nicht?__builtin
Dingen.Dies ist die großartige Beschreibung und schrittweise Anleitung zum Erstellen und Verwalten von Master- und Slave-Alternativen (gcc und g ++).
Kurz ist es:
quelle
Zwischen 4,8 und 6 mit allen
--slaves
:und
Wechseln Sie zwischen ihnen mit
update-alternatives --config gcc
.quelle
cc
undc++
Zeilen, die Fehler verursachen: Alternative CC kann nicht Slave von GCC sein: Es ist eine Master-AlternativeJetzt gibt es gcc-4.9 für Ubuntu / präzise.
Erstellen Sie eine Gruppe von Compiler-Alternativen, bei denen der Distributions-Compiler eine höhere Priorität hat:
HINWEIS: Die g ++ - Version wird automatisch mit einem gcc-Versionsschalter geändert. cpp-bin muss separat durchgeführt werden, da es eine "cpp" -Masteralternative gibt.
Liste der verfügbaren Compiler-Alternativen auflisten:
Gehen Sie folgendermaßen vor, um Version 4.9 von gcc, g ++ und cpp manuell auszuwählen:
Überprüfen Sie die Compilerversionen:
Stellen Sie die Einstellungen des Distributions-Compilers wieder her (hier: zurück zu Version 4.6):
quelle
Ich habe dieses Problem beim Versuch gefunden, einen neuen Clang-Compiler zu installieren. Es stellt sich heraus, dass sowohl die Debian- als auch die LLVM-Betreuer der Meinung sind, dass das Alternativsystem für Alternativen verwendet werden sollte, NICHT für die Versionierung .
Die von ihnen vorgeschlagene Lösung
PATH=/usr/lib/llvm-3.7/bin:$PATH
sieht ungefähr so aus: wobei /usr/lib/llvm-3.7/bin ein Verzeichnis ist, das vom Paket llvm-3.7 erstellt wurde und das alle Tools mit ihren nicht angehängten Namen enthält. Damit erscheint llvm-config (Version 3.7) mit seinem einfachen Namen in Ihrem PATH. Sie müssen weder mit Symlinks herumspielen noch die in / usr / bin installierte llvm-config-3.7 aufrufen.
Suchen Sie auch nach einem Paket mit dem Namen llvm-defaults (oder gcc-defaults), das möglicherweise eine andere Möglichkeit bietet (ich habe es nicht verwendet).
quelle
Wenn Sie eine schnellere (aber dennoch sehr saubere) Möglichkeit suchen, dies für einen persönlichen Zweck zu erreichen (z. B. wenn Sie ein bestimmtes Projekt mit hohen Anforderungen an die Version des Compilers erstellen möchten), führen Sie einfach die folgenden Schritte aus:
echo $PATH
und suchen Sie nach einem persönlichen Verzeichnis eine sehr hohe Priorität (in meinem Fall, ich habe~/.local/bin
);Zum Beispiel:
Natürlich funktioniert dies für einen einzelnen Benutzer (es ist keine systemweite Lösung), aber andererseits möchte ich nicht zu viele Dinge in meiner Installation ändern.
quelle
Ich habe nur die folgenden Zeilen verwendet und es hat funktioniert. Ich wollte nur kompilieren
VirtualBox
undVMWare WorkStation
mitkernel 4.8.10
aufUbuntu 14.04
. Anfangs funktionierten die meisten Dinge nicht, zum Beispiel Grafik und Netzwerk. Ich hatte Glück, dass ichVMWare workstation
darum gebeten habegcc 6.2.0
. Ich konnte meine nicht starten,Genymotion Android emulators
da die Virtualbox nicht verfügbar war. Wird die Ergebnisse später bei Bedarf veröffentlichen.quelle