- Crosscompiler
-
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-basiertem 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.
Cross-Compiler werden aus verschiedenen Gründen benötigt und eingesetzt:
- Mit ihnen kann ein Betriebssystem oder der Compiler selbst auf eine neue Hardwareplattform portiert werden auf der das Betriebssystem oder Compiler bisher noch nicht verfügbar war.
- Es lassen sich mit ihnen Programme für eingebettete Systeme erstellen die nicht über die Ressourcen verfügen um selbst einen Compiler laufen zu lassen (z. B. wenn diese Systeme zu wenig Arbeitsspeicher haben oder keine Festplatte besitzen).
- Sie können auf hoch-performanten Systemen laufen und für langsamere Systeme Kompilate erzeugen. Dadurch kann unter Umständen sehr viel Zeit gespart werden. Gerade bei eingebetteten System 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 diese Arbeit eventuell in wenigen Minuten erledigen kann.
Populäre freie Compiler, die zum Teil für den Einsatz als Cross-Compiler geeignet sind, sind z. B. der GNU C Compiler 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.
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.
Fußnoten
Wikimedia Foundation.