Raspberry 2 (Wheezy): GCC und G++ auf 4.8 updaten – so geht’s

Ich habe auf einem älteren Raspberry Pi 2B noch ein Raspbian/Wheezy laufen, auf dem einige spezielle Anwendungen ihren Dienst tun, deren Entwickler von Zeit zur Zeit ihre Updates als C++-Sourcen via Github veröffentlichen. Nun ist passiert, was irgendwann ja mal passieren musste: Der Compiler gab nach einem Update einige Fehler aus, weil einige benötigte Funktionen nicht verfügbar waren. Mit anderen Worten: GCC musste von der etwas betagten Version 4.6.3 auf (mindestens) 4.7 upgedated werden. Diese ist jedoch so ohne Weiteres nicht auf dem alten Raspian Wheezy per apt verfügbar. Und einfach mit „sudo apt-get install gcc-4.7“ eine neue Version drüberbügeln – damit allein ist es nicht getan. Was also tun?

Nach einigen Recherchen bin ich auf diese Anleitung gestoßen. Die habe ich Schritt für Schritt abgearbeitet. Und seitdem kann ich wieder neue Releases problemlos compilieren.

Zunächst öffnet man mit dem Editor seines Vertrauens (z. B. nano) die Datei /etc/apt/sources.list .

sudo nano /etc/apt/sources.list

Normalerweise steht dort seit Wheezy-Zeiten nur eine Zeile drin, nämlich „deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi“. Um Software aus neueren Jessie-Repositories installieren zu können, muss man die sources.list um folgenden Inhalt erweitern:

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
# Quelltext-Repository aus Raspian Jessie hinzufügen
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi

Nun die sources.list speichern und schließen. Jetzt fügt man im Verzeichnis /etc/apt/ eine Datei namens „preferences“ hinzu (sudo nano preferences) und schreibt dort Folgendes hinein:

Package: *
Pin: release n=wheezy
Pin-Priority: 900
Package: *
Pin: release n=jessie
Pin-Priority: 300
Package: *
Pin: release o=Raspbian
Pin-Priority: -10

Auch diese Datei speichern und schließen. Nun fährt man auf den eigenen Software-Stand ein Update mit „sudo apt-get update“. Nachdem das durchgelaufen ist, ist man in der Lage, GCC und G++ 4.8 aus den Jessie-Repositories zu installieren. Das geht mit

sudo apt-get install -t jessie gcc-4.8 g++-4.8

Das dauert nun etwas. Zwischendurch wird man gefragt, ob sämtliche noch laufende Dienste neu gestartet werden dürfen (u. a. Apache). Diese Abfrage bestätigt man mit „Yes“. Falls noch andere GCC-/G++Versionen auf dem Raspi vorhanden sein sollten, entfernt man diese mit

sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++

Wenn man will (oder muss, weil aus irgendwelchen Gründen noch ältere Versionen benötigt werden), kann man diese auch wieder hinzufügen:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50

Soooooo – ab sofort ist GCC 4.8 der Standard-Compiler auf der Himbeere (Testen mit „gcc -v“). Falls man evtl. andere GCC-Versionen aktivieren möchte, so geht das mit

sudo update-alternatives --config gcc
sudo update-alternatives --config g++