Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 18/01/2021, 20:06] amiralgaby Correctif après essai |
tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 21/08/2024, 21:32] (Version actuelle) Amiralgaby ancienne révision (Le 24/05/2024, 14:08) restaurée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>tutoriel programmation compilation gcc BROUILLON}} | + | {{tag>tutoriel programmation compilation gcc}} |
---- | ---- | ||
====== Comment utiliser MingW[32|64] pour faire des exécutables Windows ? ====== | ====== 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'utilise avec GCC ou G++. MingW est le portage sous Windows de GCC. | + | Il peut arriver que pour certaines raisons l'on souhaite créer des exécutables pour Windows depuis Linux. La solution est d'utiliser le programme MingW. |
- | Pour suivre ce tutoriel vous devez savoir | + | MingW est le portage de GCC sur Windows. MinGW est aussi disponible pour Linux. Il sert, sous ce système, à compiler des applications pour Windows. |
+ | |||
+ | //Voir [[wpfr>MinGW|MinGW (Wikipédia)]]// | ||
+ | |||
+ | Pour suivre ce tutoriel vous devez savoir | ||
[[tutoriel:console_ligne_de_commande|vous déplacer dans l'arborescence en ligne de commande]]. | [[tutoriel:console_ligne_de_commande|vous déplacer dans l'arborescence en ligne de commande]]. | ||
+ | |||
+ | Nous allons uniquement utiliser du C ici, pour du C++ remplacer **gcc** par **g++**. | ||
Plan du tutoriel : | Plan du tutoriel : | ||
* Code en C à avoir pour la compilation | * Code en C à avoir pour la compilation | ||
- | * Installation de MingW32 ou MingW64 | + | * Installation de MingW64 |
* Compilation | * Compilation | ||
* Exécution du programme créé | * Exécution du programme créé | ||
- | * Supplément : faire un make file pour facilité la commande de build | + | * Supplément : faire un make file pour faciliter la commande de build |
- | * Solutions aux erreurs de compilation | + | |
- | + | ||
- | Nous allons utiliser uniquement du C ici, pour du C++ remplacer **gcc** par **g++**. | + | |
===== Code à avoir sous la main ===== | ===== Code à avoir sous la main ===== | ||
Ligne 49: | Ligne 52: | ||
===== Installer le compilateur ===== | ===== Installer le compilateur ===== | ||
==== Installer MingW32 ==== | ==== Installer MingW32 ==== | ||
- | <note warning>Je n'ai pas l'impression qu'il est possible d'installer mingw-w32</note> | ||
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 ». | 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 Mingw64 ==== | ||
Ligne 57: | Ligne 59: | ||
sudo apt install gcc-mingw-w64 | sudo apt install gcc-mingw-w64 | ||
- | ===== Compilez ! ===== | ||
==== Compiler en ligne de commande ==== | ==== Compiler en ligne de commande ==== | ||
x86_64-w64-mingw32-gcc -o bonjour.exe main.c | x86_64-w64-mingw32-gcc -o bonjour.exe main.c | ||
- | <note>//bonjour// a été remplacé par //bonjour.exe// arbitrairement pour distinguer l'exécutable Linux de l'exécutable Windows | + | <note>Le nom de l'exécutable est **bonjour.exe** arbitrairement pour distinguer les exécutables Linux des exécutables Windows |
- | mais ce n'est absolument pas obligatoire</note> | + | mais ce n'est absolument pas obligatoire sur Linux</note> |
- | TADA ! un bel exécutable fut créé dans le dossier courant, faites | + | TADA ! un bel exécutable fut créé dans le dossier courant, faites |
file bonjour.exe # permet de voir le type de fichier | file bonjour.exe # permet de voir le type de fichier | ||
Ligne 72: | Ligne 73: | ||
==== Le « makefile » ==== | ==== Le « makefile » ==== | ||
- | Ça simplifie grandement la vie pour quelqu'un souhaitant simplement build à partir des sources :-) , [[:make|doc de make]]. | + | [[:make]] est un utilitaire pour "scripter" la compilation et l'édition de liens |
+ | Sa syntaxe est au premier abord déroutante… | ||
+ | Il permet de grandement simplifier la compilation, car il suffira de lancer la commande make pour compiler votre programme. | ||
Créons maintenant un fichier //makefile// dans le même dossier que « main.c »: | Créons maintenant un fichier //makefile// dans le même dossier que « main.c »: | ||
Ligne 81: | Ligne 84: | ||
</code> | </code> | ||
- | **Note :** Il y a une tabulation et pas une suite d'espaces devant « gcc-mingw-w64 » sur la 3ème ligne de l'exemple. Cette tabulation est //obligatoire//. | + | **Note :** Il y a une tabulation et pas une suite d'espaces devant « x86_64-w64-mingw32-gcc » sur la 3ème ligne de l'exemple. Cette tabulation est //obligatoire//. |
Attention aux logiciels de traitement de texte qui remplacent, par défaut, les tabulations par des espaces. | Attention aux logiciels de traitement de texte qui remplacent, par défaut, les tabulations par des espaces. | ||
- | Pour l'exécuter tapez (une fois placé dans le bon répertoire) : | + | Pour l'exécuter tapez (une fois placé le répertoire de votre projet) : |
make | make | ||
===== Exécuter le programme ===== | ===== Exécuter le programme ===== | ||
- | Utilisez [[:wine]] ou un [[:virtualisation|émulateur avec Windows]] ou Windows lui-même. | + | Utilisez [[:wine]], un [[:virtualisation|émulateur avec Windows]] ou Windows lui-même. |
wine main.exe | wine main.exe | ||
- | ===== Erreurs de compilation ==== | + | ===== Problème connus ==== |
- | FIXME on accueil vos erreurs sur le forum et nous mettrons les solutions ici | + | on accueil vos erreurs sur [[https://forum.ubuntu-fr.org/|le forum]] et nous mettrons les solutions ici |
===== Conclusion ===== | ===== Conclusion ===== | ||
- | Vous pouvez maintenant créer des exécutables Windows depuis Linux : il vous suffit juste de remplacer lors de vos compilations « gcc » « x86_64-w64-mingw32-gcc », « g++ » par « x86_64-w64-mingw32-g++ ». | + | 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'oubliez pas que cependant les programmes seront bien plus gros en taille que ceux produits pour Linux ou par Microsoft Visual Studio. Ceci est dû au fait que la bibliothèque standard doit être liée statiquement avec l'exécutable. | + | N'oubliez pas cependant que les programmes seront bien plus gros en taille que ceux produits pour Linux ou par Microsoft Visual Studio. Ceci est dû au fait que la bibliothèque standard doit être liée statiquement avec l'exécutable. |
===== Références ====== | ===== Références ====== | ||
- | + | * [en] Site officiel : [[https://www.mingw-w64.org/| Accueil de MingW64]] | |
- | * Site officiel : [[http://www.mingw.org/|Home of the MinGW, MSYS and mingwPORT]] [en] | + | * [fr] Source : [[http://tfc.duke.free.fr/coding/gcc-fr.html|Une introduction à GCC et MinGW]] (4 juin 2006) |
- | * Source : [[http://tfc.duke.free.fr/coding/gcc-fr.html]] | + | |
---- | ---- | ||
//Contributeurs : [[utilisateurs:hind_flo]], [[utilisateurs:Ner0lph]], [[:utilisateurs:amiralgaby]] (éditions mineures), [[:utilisateurs:DarkShade]]// | //Contributeurs : [[utilisateurs:hind_flo]], [[utilisateurs:Ner0lph]], [[:utilisateurs:amiralgaby]] (éditions mineures), [[:utilisateurs:DarkShade]]// |