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 18/04/2009, 02:50] – 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:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
