Sonntag, 18. Mai 2008

Compiler-Mischung: gcc 2 & 4

Weil BeOS seit den Zeiten von gcc2x nicht mehr weiter entwickelt wurde, sind mit dieser Compilerversion auch das OS, alle Bibliotheken und dementsprechend auch alle Anwendungen entstanden. Um auf den bestehenden Softwarebestand zurückgreifen zu können und damit gleichzeitig viele Tests aller Aspekte des Betriebssystem zu haben, hat man sich für Haiku von Anfang an für eine (weitgehende) Source- und Binärkompatibilität zu BeOS R5 entschlossen.

Je länger Haiku zum ersten Release braucht, umso öfter wurde diese Taktik in Frage gestellt. Schließlich ist heutzutage der gcc4x aktuell und bietet neue und weiterentwickelte Features. Gerade Portierungen, wie z.B. WebKit, setzen eine aktuelle Compilerversion voraus.
Leider lässt sich der Compiler für ein Betriebssystem oft nicht so einfach wechseln. Programme, die mit einer bestimmten Version kompiliert wurden, erwarten dass z.B. benötigte Funktionen in Bibliotheken unter einem bestimmten Namen zu finden sind und C++ Datenstrukturen in einer bestimmten Weise organisiert sind. Ein neuer Compiler erzeugt jedoch anders aufgebaute Bibliotheken. Ein gcc2-kompiliertes Programm würde in einem gcc4-kompilierten Betriebssystem also nicht funktionieren. Und umgekehrt. Reine C-Programme sind im Gegensatz zu C++-Programmen davon übrigens nicht betroffen.

Ingo Weinhold hat nun umgesetzt, was schon länger angedacht wurde. Dazu änderte er den "runtime_loader" und passte Haikus Buildsystem an. Wird nun ein Programm gestartet werden die benötigten Bibliotheken in einem gcc2 bzw. gcc4 Unterverzeichnis gesucht. Diese müssen beim Erzeugen des Haiku Image durch die neue Option "--alternative-gcc-output-dir" und die Build Variable "HAIKU_ADD_ALTERNATIVE_GCC_LIBS" angelegt werden.

Voilà, alte gcc2-Anwendungen laufen in einem gcc4-Haiku. Und umgekehrt.
Wie sich das in der Praxis bewährt, wird sich zeigen. Ingos erste Versuche waren positiv: Die gcc2 Anwendungen Net+, Pe und Firefox liefen im gcc4-Haiku. Andersrum liefen die gcc4-kompilierten Standard Haiku Anwendungen im gcc2-Haiku.

Keine Kommentare:

Kommentar veröffentlichen