Linux: C Programm für Windows kompillieren

Bisher habe ich immer einen großen Bogen um C unter Windows gemacht. Da ich aber nun eine Anwendung benötige, die am Ende des Tages unter Windows und Linux lauffähig sein soll, musste ein Crosscompiler für Windows her, der unter Linux läuft. Gerade bei grafischen Oberflächen sollte man auch während der Entwicklung zwischendurch Tests unter Windows durchführen. Möchte man dazu aber nicht gleich wieder eine ganze Entwicklungsumgebung unter Windows installieren ist ein Crosscompiler die einzig sinnvolle Möglichkeit. Konkret wird in diesem Beitrag die Installation von MinGW unter Debian Jessie beschrieben.

Zunächst stellt sich die Frage, für welche Architektur das Programm kompilliert werden soll. Für die meisten Programme dürften 32 Bit ausreichen, hier wird jedoch auch die Installation für 64 Bit Systeme beschrieben.

Zu Beginn steht wie immer eine Installation mehrerer Debian Pakete. Dazu wird folgender Befehl ausgeführt:

sudo apt-get install gcc-mingw-w64 gcc-mingw-w64-i686

Nach der Installation kann das altbekannte Hello World Programm kompilliert werden.

#include <stdio.h>

int main(void) {
  printf("Hallo Welt\n");
  return 0;
}

Zum kompillieren von 32 Bit Executables wird der folgende Befehl ausgeführt:

i686-w64-mingw32-gcc main.c -o hello-w32.exe

Für 64 Bit:

x86_64-w64-mingw32-gcc main.c -o hello-w64.exe

Das war es auch schon. Hat man Wine auf dem Rechner installiert, kann das Programm auch schon unter Linux getestet werden. Dazu wird folgender Befehl aufgerufen:

wine hello-w32.exe

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.