Cross-Compiler
Unter einem Cross-Compiler versteht man einen Compiler, der auf einem bestimmten System (auch Hostplattform genannt) läuft, aber Kompilate (Objektdateien oder ausführbare Programme) für andere Systeme erzeugt. Diese Ziel-Systeme können andere Betriebssysteme, andere Prozessoren oder eine Kombination der beiden sein. Ein konkretes Beispiel wäre ein Compiler, der auf einem Intel-basierten Windows-System läuft und Programme für PowerPC-basierte Linux-Systeme erzeugt. Handelt es sich bei der Zielplattform um ein eingebettetes System, das selbst nicht für Entwicklung und Übersetzung geeignet ist, spricht man auch von einem Target-Compiler.
Typische Einsatzbereiche
BearbeitenCross-Compiler werden aus verschiedenen Gründen benötigt und eingesetzt:
- Mit ihnen kann ein Betriebssystem, ein Programm oder auch der Compiler selbst auf eine neue Hardwareplattform portiert werden, auf der das Betriebssystem oder der Compiler bisher noch nicht verfügbar war.
- Es lassen sich mit ihnen Programme für eingebettete Systeme erstellen, die nicht über die notwendigen Ressourcen verfügen, um selbst einen Compiler auszuführen (z. B., wenn diese Systeme zu wenig Arbeitsspeicher haben oder keine Festplatte besitzen).
- Sie können auf schnellen Systemen laufen und für langsamere Systeme Kompilate erzeugen. Dadurch kann unter Umständen sehr viel Zeit gespart werden. Gerade bei eingebetteten Systemen werden häufig vergleichsweise langsame Prozessoren verwendet, die Stunden benötigen würden, um ein gewünschtes Programm zu erzeugen, während ein aktueller Server als Hostplattform diese Arbeit eventuell in wenigen Minuten erledigen kann.
- Sie können auf einem Integrationsserver Kompilate, z. B. Nightly Builds, für verschiedene Zielplattformen erzeugen.
- Die Entwicklung kann komfortabler, z. B. mittels einer IDE, auf einem System vollzogen werden, siehe z. B. cc65 für den Commodore 64.
Viele Hersteller von Prozessoren für eingebettete Systeme liefern ihren Kunden entsprechende Target-Compiler mit, meist für die Programmiersprache C und lauffähig auf einem oder mehreren gängigen Betriebssystemen.
Populäre Beispiele
BearbeitenPopuläre freie Compiler, die zum Teil für den Einsatz als Cross-Compiler geeignet sind, sind z. B. die GNU Compiler Collection und der Free-Pascal-Compiler. Für einige 8-Bit-Zielsysteme (Mikrocontroller aus der MCS-51-Serie, Zilog Z80, Dallas 80C390, Motorola HC08, Microchip PIC) eignet sich der ebenfalls freie Small Device C Compiler.[1] Für alte 6502-basierte Computerarchitekturen gibt es den cc65-Compiler.