Typ: Tutorial
Artikel Name: Crosscompiling Linux > Windows
Autor: monta
Beschreibung: Wie man unter Linux Windowsprogramme erstellen kann
Ziel des Tutorials ist es, unter Linux Windowsanwendungen zu kompilieren.
Das Tutorial basiert dabei auf OpenSuse, es sollte jedoch ein leichtes sein, es auch auf andere Linuxdistributionen zu übertragen, da sich lediglich die direkte Package-Installation unterscheiden dürfte. Die Konfiguration von Lazarus ist hingegen für verschiedene Distributionen identisch.
Doch wozu das ganze?
Zum einen arbeiten einige ständig mit Linux und haben so keine lauffähige Windowsinstallation zum Entwickeln zur Verfügung, möchten allerdings dennoch ihre Anwendung auch für Windows zur Verfügung stellen. Zum anderen wird es dadurch sehr erleichertert, für Linux und Windows parallel zu entwickeln, ohne immer ein neues Betriebssystem starten zu müssen, oder Windows innerhalb einer VM zu betreiben.
Abgesehen davon, gestaltet es sich um einiges leichter, unter Linux Windowsanwendungen zu kompilieren, als umgekehrt Linuxbinaries unter Windows zu erstellen.
Es erweist sich als äußerst vorteilhaft, bevor man mit Crosscompiling beginnt, zuerst einmal wine zu installieren. Wine ermöglicht es dabei, die erstellten Windows-Programme unter Linux auszuführen.
Auf die Installation soll hierbei nicht näher eingegangen werden, da wine über die üblichen Installationsprogramme bei Suse und anderen Distributionen bereits mitgeliefert wird:
Voraussetzungen
Um Programme für eine bestimmte Plattform zu erstellen benötigt man grundsätzlich einige Plattformspezifische Komponenten. Bei Lazarus sind dies hauptsächlich der Assembler und der Linker. Um nun die benötigten Komponenten zum Erstellen eines Windowsprogrammes unter Linux zur Verfügung zu haben, ist der einfachste Weg die Nutzung des Vorgefertigten Packages fpc_crosswin... welches unter http://sourceforge.net/project/showfiles.php?group_id=89339 heruntergeladen werden kann.
Konfiguration Lazarus
Nach start der IDE müssen wir nun zuerst die plattformspezifischen Teile neu erstellen. Dazu rufen wir zunächst den Dialog Lazarus erstellen einrichten auf.
- LCL erstellen[/], Codetools erstellen, Synedit erstellen, Package-Registrierung erstellen und IDE-Schnittstellen erstellen müssen auf Clean and Build gesetzt werden
- JIT Formular erstellen, IDE neu erstellen, Startprogramm erstellen und Beispiele erstellen müssen hingegen auf none gesetzt werden
- Bei LCL-Schnittstelle wählt man win32 aus
- als Zielbetriebssytsem wird ebenfalls win32 angegeben
Anschließend wird das Erstellen über den entsprechenden Button gestartet und abgewartet bis die Erstellung erfolgreich ebgeschlossen wurde.
Die erste Anwendung
Nach dem die nötigen Vorbereitungen getroffen sind, können wir nun damit beginnen unsere eigentliche Windowsanwendung zu erstellen.
Etwas Luxus
Direktes starten der Anwendnung in wine (muss installiert sein!)
Im Normalfall wird man seine erstellte Anwendung wohl auch betrachten wohlen, was momentan nur über einen externen Start in wine machbar ist.
Außerdem stürtzt die IDE momentan sofort ab, sobald man versucht, die Anwendung mittels Ausführen zu starten, da Linux natürlich keine Windowsanwendungen ausführen kann, führt dies zum sofortigen Crash.
Um nun die Möglichkeit zu haben, die Anwednung direkt aus der IDE heraus auszuführen müssen wir nun noch Startparameter setzen. Dazu rufen wir den entsprechenden Menüpunkt Start > Startparameter... auf.
- die Option Startprogramm verwenden wird aktiviert
- in die entsprechende Zeile geben wir folgendes ein: usr/bin/wine $(TargetCmdLine)
Noch ein Wort zum Abschluss, wie man diesen Prozess wieder rückgängig machen kann.
Um eine Anwendung wieder für Linux zu erstellen, müssen lediglich die Einstellungen unter Projekt > Compilereinstellungen geändert werden. So ändert man die LCL-Schnittstelle wieder auf GTK1 (oder eine andere gewünschte) und löscht auf der Registerseite Quelltext die Eintragung des Zielsystems.
Außerdem müssen wir, um das Programm wieder in der IDE ausführen zu können, noch die Startparameter zurücksetzen. Dazu deaktiviert man unter Start > Startparameter die Option Startprogramm verwenden und wählt aus der Liste den vorherigen Eintrag aus, so das das Programm ohne wine direkt gestartet wird.