Inhaltsverzeichnis

GCC Upgrade

Wieso sollten Sie aktualisieren? Nun ja, GCC ist jedem anderen Paket auf Ihrem System sehr ähnlich, nur etwas kritischer. Wann immer eine neue Version Fehler beseitigt, die Sie stören, neue Funktionen, die Sie benötigen bereitstellt oder Sie einfach nur aktuell bleiben möchten, sollten Sie GCC aktualisieren. Sollte keiner dieser Fälle auf Sie zutreffen, können Sie die Aktualisierung so lange aufschieben, solange Ihre GCC-Version von den Gentoo Entwicklern unterstützt wird. Wenn Sie eine neue Hauptversion von GCC installieren (wie von 3.3.6 auf 3.4.5), wird das System diese nicht automatischen benutzen. Sie müssen den Wechsel selbst veranlassen, da die Umstellung einige weitere Schritte benötigen kann. Falls Sie sich dazu entscheiden, nicht zu wechseln, wird Portage weiterhin die alte Version verwenden, außer Sie entscheiden sich zu wechseln oder löschen den alten Compiler von Ihrem System. Bei Aktualisierungen von Unterversionen von GCC (wie von 3.4.5 auf 3.4.6) wird automatisch für Sie gewechselt.Als wir über die Notwendigkeit des Wechsels auf den neuen Compiler von Hand gesprochen haben, haben wir gesagt, das wird nicht automatisch erfolgen. Allerdings gibt es eine Ausnahme – Upgrades auf Bug-Fix-Releases, wie von 3.3.5 auf 3.3.6 für den Fall, dass Sie das „multislot“ Feature, das es beiden Versionen erlaubt auf einem System zu existieren, nicht verwenden. Multislot ist standardmäßig deaktiviert und die Mehrheit der Benutzer werden keinen Vorteil von dieser Funktion haben.

emerge -e verwenden

Diese Methode, obwohl um einiges langsamer, wird Ihr gesamtes System neu bauen, um sicherzustellen, dass Alles mit Ihrem neuen Compiler neu gebaut wurde und ist daher viel sicherer. Zuerst aktualisieren Sie GCC und libtool und wechseln zu Ihrem neuen Compiler.

emerge -uav gcc

(Bitte ersetzen Sie "i686-pc-linux-gnu-3.4.5" mit der GCC-Version und
den CHOST-Einstellungen auf die Sie aktualisiert haben:)

gcc-config i686-pc-linux-gnu-3.4.5
source /etc/profile

Falls Sie von gcc 3 auf 4 aktualisiert haben (z.B. von 3.4.6 auf 4.1.1
in diesem Beispiel) müssen Sie fix_libtool_files.sh manuell ausführen
(Ersetzen Sie $CHOST mit Ihrem eigentlichen CHOST, welcher in der
/etc/make.conf zu finden ist)
(Ersetzen Sie <gcc-version> mit Ihrer neuen, aktualisierten
GCC-Version)

/usr/share/gcc-data/$CHOST/<gcc-version>/fix_libtool_files.sh 3.3.6
(libtool neu bauen)

emerge --oneshot -av libtool

Um die Kompatibilität mit älteren C++ Binärapplikationen zu gewährleisten, muss sys-libs/libstdc++-v3 auf Ihrem System installiert werden.

emerge --oneshot sys-libs/libstdc++-v3

Jetzt werden wir dazu übergehen, zuerst das system-Ziel und dann das world-Ziel neu zu bauen. Das wird sehr lange dauern, abhängig von der Anzahl der Pakete die Sie installiert haben, da es Ihre komplette Toolchain und unterstützenden Systemdateien neu erstellen wird, gefolgt von jedem Paket auf Ihrem System, inklusive der Toolchain. Das ist nötig, um sicher zu stellen, dass alle Pakete mit dem neuen Compiler gebaut wurden, inklusive der Toolchain selbst.

emerge -e system
emerge -e world

Ab diesem Zeitpunkt ist es sicher, alte GCC-Versionen zu entfernen:

emerge -aC =sys-devel/gcc-3.3*

Weitere Informationen