Wie kann ich GCC 4.7 auf Precise installieren lassen?

14

Die neueste Version von GCC im Precise-Archiv ist 4.6.3. GCC 4.7 unterstützt jedoch einige neuere C ++ 11-Funktionen (z. B. das Delegieren von Konstruktoren). Quantals Paketarchive verfügen über GCC 4.7.2.

Gibt es eine Möglichkeit, wie ich GCC 4.7 auf Precise installieren kann? Besser noch, gibt es eine einfache Möglichkeit, eine neuere Version eines Pakets in einer Version zu übernehmen und auf eine ältere Version zurück zu portieren?

Nathan Osman
quelle

Antworten:

16

Ich habe hier eine PPA erstellt, die einen Build von GCC 4.7 für Precise enthält:

ppa: george-edison55 / gcc4.7-precisionLaunchpad-Logo ( Klicken Sie hier, um Anweisungen zur Verwendung von PPAs zu erhalten. )


Das Backportieren eines Pakets von einer Version zu einer anderen ist ein relativ einfacher Vorgang, vorausgesetzt, Sie haben ein Launchpad-Konto und haben Ihren GPG-Schlüssel dort registriert.

Stellen Sie sicher, dass Sie das Paket ubuntu-dev-toolsInstallieren Sie die Ubuntu-Dev-Tools installiert haben:

sudo apt-get install ubuntu-dev-tools

Die Syntax zum Ausführen des Befehls backport sieht ungefähr so ​​aus:

backportpackage -s [new_release] -d [old_release] -u [ppa] [package_name]

Mit dem obigen Befehl wird [package_name]von [new_release]nach zurückportiert [old_release]und in hochgeladen [ppa]. Beachten Sie, dass Sie in diesem speziellen Fall nicht nur, gcc-4.7sondern auch gcj-4.7und gcc-defaults in dieser Reihenfolge zurückportieren müssen .

Nathan Osman
quelle
1
Kaum zu glauben, dass es so einfach ist. \ 0 /
tshepang
1

Etwas einfacher ist es, nur die PPA des Ubuntu Toolchain Uploaders (Restricted) Team für Testbuilds zu verwenden, die Toolchain-Builds (einschließlich gcc usw.) neuerer Toolchains in älteren Releases enthält. Der obige Link zeigt die Precise-Pakete dort, aber sie kompilieren die Dinge.

Die verfügbaren Releases umfassen gcc 4.7, 4.8, 4.9 und 5, obwohl ich nur 4.7 getestet habe.

Sie können Ihre eigenen gcc-Pakete und dergleichen immer zurückportieren, aber das kann immer Zeit in Anspruch nehmen.

Thomas Ward
quelle