Gentoo GCC Upgrade
April 10th, 2009
Diesen Monat wurde der GNU C Compiler unter Gentoo Linux einem Upgrade von 4.1.2 auf 4.3.2 unterzogen.
Dies ist normalerweise keine Rede wert, doch bei diesem Upgrade wird ein neues CFLAG eingeführt welches automatisch die besten CFLAGS für den verwendeten Prozessor/Architektur setzt. Um dieses Feature zu verwenden und die Binärdaten anzupassen, muss das System neu kompiliert werden.
Man sollte sein System am besten immer auf dem neuesten Stand halten, um inkompatibilitäten aus dem Weg zu gehen. Als erstes synchronisieren wir den Portage Tree, um auch wirklich die aktuellsten ebuilds zu verwenden.
# emerge --sync
Danach wird der neue GCC gebaut. Dieser Schritt beansprucht etwas Zeit.
# emerge -1 gcc
Anschliessend wechseln wir den zu verwendenden Compiler auf die neue Version.
# gcc-config x86_64-pc-linux-gnu-4.3.2
Zur Sicherheit führen wir noch ein Script aus, das mögliche Fehlstellungen in Bibliotheken anpasst.
# fix_libtool_files.sh 4.1.2
Nun sind wir bereit die CFLAGS in der make.conf abzuändern. Meine alten CFLAGS:
CFLAGS="-march=nocona -O2 -pipe"
wurden zu:
CFLAGS="-march=native -pipe"
Die Optimierungseinstellungen können nun vernachlässigt werden.
Im nächsten Schritt werden die Umgebungsvariablen und das Profil aktualisiert und danach das libtool, gcc und glibc mit der neuen Version und CFLAGS kompiliert. Dieser Vorgang wird einige Zeit in Anspruch nehmen.
# env-update && source /etc/profile
# emerge -1 libtool gcc glibc
Anschliessend wird das System neu gebaut. Diesen Schritt kann man evtl. auch überspringen, falls man es eilig hat. Ich empfehle jedoch dazu.
# emerge -e system
Als letzten optimierten Kompilierungsprozess erstellt man nun die World neu.
# emerge -e world
Danach kann man die alte GCC Version entfernen, am besten über ein Abhängigkeits-Cleanup.
# emerge --depclean
Nun hat man ein aktuelles, optimiertes gentoo linux. Jedoch fehlt noch der Kernel! Diesen kompiliert man jedoch nicht mit den Einstellungen aus der make.conf. Aber um ein sauber übersetztes System zu haben, muss man den Kernel auch neu kompilieren. Optimiert wird dieser durch die Einstellungen/Konfiguration des Kernels, hier muss man die Architektur auch entsprechend angeben.
Have fun!