La cross-compilation d'applications Windows depuis Linux

Si vous avez l'habitude de coder en C/C++ sous Linux, vous savez donc à quel point il est frustrant de ne pas pouvoir produire directement un binaire pour Windows. Plus besoin de rebooter pour compiler grâce à cette astuce !

Pour commencer :
Un compilateur croisé (en anglais Cross Compiler) est un programme capable de traduire un code source en code objet ayant un environnement d'exécution (architecture matérielle, système d'exploitation) différent de celui où la compilation est effectuée. Ces compilateurs sont principalement utilisés en informatique industrielle et dans les systèmes embarqués. Wikipedia

Dans cet article, on va simplement créer un exécutable Windows qui affichera une fenêtre avec un message, le tout en restant sous Linux.



Prérequis : Rien de bien méchant ;)
root@localhost:/# sudo apt-get install wine mingw32 mingw32-binutils mingw32-runtime



Action !

Pour suivre la tradition, on va commencer par un hello world en console :

#include <stdio.h> 

int main() 

printf("Hello World !\n"); 
return 0; 
}

Il faut remplacer i686-w64-mingw32-gcc par votre architecture.
root@localhost:/# i686-w64-mingw32-gcc -o hello.exe hello.c
root@localhost:/# wine hello.exe
Hello World !


Maintenant on va tester avec une application graphique :
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
  MessageBox(NULL,
    "Hello World !",
    "www.binsec.blogspot.fr", MB_OK);
  return 0;
}




root@localhost:/# i686-w64-mingw32-gcc -o fenetre.exe fenetre.c
root@localhost:/# wine fenetre.exe


Et voila les deux programmes en action sur Windows :


C'est à vous de jouer maintenant :)

Aucun commentaire:

Enregistrer un commentaire