E.1. GCC 2.96

Der Hintergrund:  Die GCC 2.95 Serie ist ein offizielles GNU-Release und Version 2.95.3 ist die fehlerfreieste dieser Serie. Wir haban niemals Compilier-Probleme beobachten können, die auf den GCC 2.95.3 zurückzuführen gewesen wären. Angefangen mit Red Hat Linux 7.0 begann Red Hat eine stark veränderte CVS-Version des GCC mitzuliefern und nannte sie 2.96. Red Hat hat diese Version in seine Distribution aufgenommen, weil GCC 3.0 zu diesem Zeitpunkt noch nicht fertiggestellt war und weil sie einen Compiler brauchten, der auf allen unterstützten Plattformen gut arbeitete, einschließlich IA64 und s390. Der Linux-Distributor Mandrake (jetzt Mandriva) folgte ebenfalls dem Beispiel Red Hat's und begann bald darauf, GCC 2.96 mit seiner Linux-Mandrake 8.0 Serie auszuliefern.

Die Stellungnahmen:  Das GCC-Team dementierte jegliche Verbindung zu GCC 2.96 und publizierte eine offizielle Stellungnahme auf GCC 2.96. Viele Entwickler weltweit trafen auf Probleme mit GCC 2.96 und verschiedene Projekte, darunter avifile, und fingen an, andere Compiler zu empfehlen. Weitere interessante Links sind der Linux kernel news flash about kernel 2.4.17 und das Voy Forum. MPlayer litt ebenfalls zeitweilig an Problemen, die alle durch den Wechsel zu einer anderen Version von GCC ausgelöst worden waren. Verschiedene Projekte begannen daraufhin damit, Workarounds für einige der Probleme mit 2.96 zu implementieren, aber wir lehnten es ab, Fehler anderer Leute zu beheben. Dazu kommt, dass einige Workarounds zu Performance-Einbußen führten.

GCC 2.96 erlaubt keine | (pipe-Zeichen) in Assembler-Kommentaren, weil er gleichermaßen die Intel- wie auch die AT&T-Syntax unterstützt und das Zeichen | ein Symbol in der Intel-Variante darstellt. Das Problem liegt nun darin, dass der GCC den kompletten Assembler-Block stillschweigend ignoriert. Dieser Fehler wurde inzwischen angeblich behoben. GCC gibt eine Warnung aus anstatt den Block einfach zu überspringen.

Die Gegenwart:  Red Hat erklärt, dass GCC 2.96-85 und neuer keine Fehler mehr enthalten. Die Situation hat sich tatsächlich verbessert, jedoch sehen wir nach wie vor Problemberichte auf unseren Mailing-Listen, die mit Verwenden eines anderen Compilers verschwinden. Wie dem auch sei, es ist inzwischen nicht mehr von Bedeutung. Hoffentlich wird ein herangereifter GCC 3.x all dieses Problem ein für alle mal beheben. Wenn du wirklich mit 2.96 compilieren willst, füge configure die Option --disable-gcc-checking hinzu. Vergiss nicht, du bist auf dich allein gestellt, melde keine Bugs. Tust du dies trotzdem, wirst du nur aus der Mailing-Liste verbannt, da wir mehr als genug Flamewars wegen GCC 2.96 erlebt hatten. Lass dieses Thema bitte ruhen.

Solltest du Probleme mit dem GCC 2.96 haben, bekommst du Pakete für die Version 2.96-85 auf Red Hats FTP-Server, oder benutze einfach die für Version 7.2 und neuer bereitliegenden Pakete für die Version 3.0.4. Du kannst auch Pakete für gcc-3.2.3-37 herunterzuladen (inoffiziell, aber sie funktionieren einwandfrei), und du kannst diese analog zu deinem GCC 2.96 installieren. MPlayer wird es erkennen und Version 3.2 statt 2.96 verwenden. Wenn du aus irgendeinem Grund die binären Pakete nicht anwenden willst oder kannst, lies hier eine kleine Anleitung, wie du GCC 3 von den Quellen compilieren kannst:

  1. Gehe zur Seite mit den GCC-Mirrors und lade gcc-core-XXX.tar.gz herunter, wobei XXX die Versionsnummer bedeutet. Dieses Paket beinhaltet den kompletten C-Compiler und reicht für MPlayer aus. Willst du darüber hinaus Unterstützung für C++, Java oder einige der erweiterten GCC-Features, ist gcc-XXX.tar.gz womöglich besser für deine Bedürfnisse geeignet.

  2. Entpacke das Archiv mit

    tar -xvzf gcc-core-XXX.tar.gz

  3. Der GCC ist nicht innerhalb des Quelltextverzeichnisses selbst eingebaut wie andere Programme, sondern benötigt ein spezielles Build-Verzeichnis ausserhalb des Quelltextbaumes. Deshalb erstelle dieses Verzeichnis mit

    mkdir gcc-build

  4. Danach kannst du mit dem Konfigurieren des GCC im Build-Verzeichnis fortfahren, du brauchst aber das configure-Script aus dem Quelltextverzeichnis:

    cd gcc-build
    ../gcc-3.XXX/configure

  5. Compiliere GCC mit folgendem Befehl im Build-Verzeichnis:

    make bootstrap

  6. Jetzt kannst du GCC (als root) mit diesem Befehl installieren

    make install