Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 09/11/2009, 08:45] – 213.95.41.13 | tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 10/02/2021, 18:24] (Version actuelle) – [Conclusion] oublie de "par " et de "et", merci pour la page 91.175.210.88 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Comment utiliser MingW[32|64] pour faire des exécutables Windows ? ====== | ||
+ | Il peut arriver que pour certaines raisons l'on souhaite créer des exécutables pour Windows depuis Linux. Il existe une solution : MingW. MingW s' | ||
+ | |||
+ | Pour suivre ce tutoriel vous devez savoir | ||
+ | [[tutoriel: | ||
+ | |||
+ | Nous allons uniquement utiliser du C ici, pour du C++ remplacer **gcc** par **g++**. | ||
+ | |||
+ | Plan du tutoriel : | ||
+ | * Code en C à avoir pour la compilation | ||
+ | * Installation de MingW64 | ||
+ | * Compilation | ||
+ | * Exécution du programme créé | ||
+ | * Supplément : faire un make file pour faciliter la commande de build | ||
+ | |||
+ | ===== Code à avoir sous la main ===== | ||
+ | La première des choses est d' | ||
+ | Si vous n'en avez pas voici un code à copier-coller dans un fichier (de préférence " | ||
+ | <code c> | ||
+ | #include < | ||
+ | |||
+ | int main () | ||
+ | { | ||
+ | printf(" | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Vous pouvez compiler le code suivant pour vérifier le fonctionnement des appels windows : | ||
+ | |||
+ | <code c> | ||
+ | #include < | ||
+ | |||
+ | int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, | ||
+ | LPSTR lpCmdLine, int nCmdShow) | ||
+ | { | ||
+ | MessageBoxW(NULL, | ||
+ | L" | ||
+ | L" | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Installer le compilateur ===== | ||
+ | ==== Installer MingW32 ==== | ||
+ | Pour compiler en 32 bits, installer la version 64 bits ci-dessous et remplacer tous les « x86_64-w64-mingw32-gcc » par « i686-w64-mingw32-gcc ». | ||
+ | ==== Installer Mingw64 ==== | ||
+ | installer **[[apt> | ||
+ | |||
+ | En ligne de commande cela donne : | ||
+ | sudo apt install gcc-mingw-w64 | ||
+ | |||
+ | ===== Compilez ! ===== | ||
+ | ==== Compiler en ligne de commande ==== | ||
+ | x86_64-w64-mingw32-gcc -o bonjour.exe main.c | ||
+ | |||
+ | < | ||
+ | mais ce n'est absolument pas obligatoire sur Linux</ | ||
+ | |||
+ | TADA ! un bel exécutable fut créé dans le dossier courant, faites | ||
+ | file bonjour.exe # permet de voir le type de fichier | ||
+ | |||
+ | C'est bel est bien un exécutable Windows s'il possède **Windows** dans sa description. | ||
+ | |||
+ | Vous venez de créer un exécutable pour Windows. | ||
+ | |||
+ | ==== Le « makefile » ==== | ||
+ | Ça simplifie grandement la vie pour quelqu' | ||
+ | |||
+ | Créons maintenant un fichier // | ||
+ | <code makefile> | ||
+ | # Makefile : build exécutable Windows | ||
+ | w-exe: main.c | ||
+ | x86_64-w64-mingw32-gcc -o main.exe main.c | ||
+ | </ | ||
+ | |||
+ | **Note :** Il y a une tabulation et pas une suite d' | ||
+ | Attention aux logiciels de traitement de texte qui remplacent, par défaut, les tabulations par des espaces. | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | make | ||
+ | |||
+ | ===== Exécuter le programme ===== | ||
+ | Utilisez [[:wine]], un [[: | ||
+ | wine main.exe | ||
+ | |||
+ | ===== Problème connus ==== | ||
+ | on accueil vos erreurs sur [[https:// | ||
+ | |||
+ | ===== Conclusion ===== | ||
+ | Vous pouvez maintenant créer des exécutables Windows depuis Linux : il vous suffit simplement de remplacer lors de vos compilations « gcc » par « x86_64-w64-mingw32-gcc » et « g++ » par « x86_64-w64-mingw32-g++ ». | ||
+ | |||
+ | N' | ||
+ | |||
+ | ===== Références ====== | ||
+ | |||
+ | * [en] Site officiel : < | ||
+ | * [en] Site officiel : [[http:// | ||
+ | * [fr] Source : [[http:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // |