Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 09/03/2015, 15:42]
195.68.26.1 [Erreur de compilation]
tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 23/06/2023, 13:57] (Version actuelle)
80.14.89.143 changements pour plus de convivialité
Ligne 1: Ligne 1:
-{{tag>​tutoriel programmation compilation gcc BROUILLON}}+{{tag>​tutoriel programmation compilation gcc}}
  
 ---- ----
  
-====== Comment utiliser ​MingW32 ​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. La solution est d'​utiliser le programme MingW.
  
 +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.
  
-Il peut arriver que pour certaines raisons l'on souhaite créer des exécutables pour Windows depuis Linux. Il existe une solution : MingW32. MingW s'​utilise avec GCC ou G++. MingW est le portage sous Windows de GCC.+//Voir [[wpfr>​MinGW|MinGW (Wikipédia)]]//​
  
-Pour suivre ce tutoriel vous devez savoir ​+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 :
 +  * 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 ===== 
-===== Installer GCC ===== +La première des choses ​est d'avoir un code, ici en C, compilable
- +Si vous n'en avez pas voici un code à copier-coller dans un fichier ​(de préférence "main.c")
-Si ce n'est pas déjà fait, installez GCC. Il suffit pour cela d'installer (//via// [[:​Synaptic]] ou [[:APT]]) le paquet nommé « gcc »+
-==== Vérification de l'installation ==== +
- +
-Pour vérifier l'​installation,​ créez ​un fichier ​nommé « main.c ​» et éditez-le. +
- +
-Copiez-collez le code suivant :+
 <code c> <code c>
 #include <​stdio.h>​ #include <​stdio.h>​
Ligne 32: Ligne 35:
 </​code>​ </​code>​
  
-Ouvrez alors un terminal, ​pour vous placer dans le dossier ou se situe « main.c » et tapez :+Vous pouvez compiler le code suivant ​pour vérifier ​le fonctionnement des appels windows ​:
  
-  gcc -o bonjour main.c 
- 
-Faites ensuite : 
- 
-   ​./​bonjour 
- 
-Le message : « //Bonjour linuxien !// » apparait. 
-  
- 
- 
- 
-===== Installer MingW32 ===== 
- 
- 
-L'​installation de MingW32 s'​effectue en installant le paquet « mingw32 » ([[apt://​mingw32]]). 
-Cela fait, recompilez le programme fait plus haut en remplaçant : 
- 
-  gcc -o bonjour main.c 
- 
-par  
- 
-  i586-mingw32msvc-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 mais ce n'est absolument pas obligatoire. 
- 
-Vous venez de créer un exécutable pour Wine 
- 
-Vous pouvez compiler le code suivant pour vérifier le fonctionnement des appels windows : 
 <code c> <code c>
 #include <​windows.h>​ #include <​windows.h>​
Ligne 73: Ligne 48:
   return 0;   return 0;
 } }
- 
 </​code>​ </​code>​
  
 +===== 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>​gcc-mingw-w64]]**.
  
-===== Code Blocks =====+En ligne de commande cela donne : 
 +  sudo apt install gcc-mingw-w64
  
-Lien pour le cross compileur (anglais) : http://wiki.codeblocks.org/​index.php?​title=Code::​Blocks_and_Cross_Compilers+===== Compilez ! ===== 
 +==== Compiler en ligne de commande ==== 
 +  x86_64-w64-mingw32-gcc -o bonjour.exe main.c
  
-==== Erreur ​de compilation ====+<​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 sur Linux</​note>​
  
-Vous avez l'​erreur " uses an invalid compiler. Skipping..."​ après avoir suivi le tutoriel ci-dessus... pas de panique, il vous manque certainement un répertoire ​de recherche:+TADA ! un bel exécutable fut créé dans le dossier courant, faites 
 +  file bonjour.exe # permet ​de voir le type de fichier
  
-Allez dans **Settings**->​**Compiler and debugger settings** //​(sélectionner bien sur le compileur mingw32)//+C'est bel est bien un exécutable Windows s'il possède ​**Windows** dans sa description.
  
-Ensuite allez dans le sous-onglet "​**Toolchain executable**"​ //(ou "​**Programs**"​)//​+Vous venez de créer un exécutable pour Windows.
  
-Cliquez sur "​**Additional paths**"​ et ajouter //(bouton "​**ADD**"​)//​ : +==== Le « makefile » ==== 
-  * /usr/bin +[[:make]] est un utilitaire pour "​scripter"​ la compilation et l'​édition de liens 
-  * /​usr/​i586-mingw32msvc +Sa syntaxe est au premier abord déroutante… 
-  * /​usr/​i586-mingw32msvc/​bin +Il permet de grandement simplifier la compilation,​ car il suffira de lancer la commande make pour compiler votre programme.
- +
-Faites un rebuild et tout devrait être rentré dans l'​ordre. +
-===== Le « makefile » ===== +
- +
-Imaginons maintenant un //​makefile//​ simple (dans le même dossier que « main.c ») :+
  
 +Créons maintenant un fichier //​makefile//​ dans le même dossier que « main.c »:
 <code makefile>​ <code makefile>​
-exe: main.c +# Makefile : build exécutable Windows 
- gcc -o exe main.c+w-exe: main.c 
 + x86_64-w64-mingw32-gcc -o main.exe main.c
 </​code>​ </​code>​
  
-**Note :** Il y a une tabulation et pas une suite d'​espaces devant « gcc » sur la 2e 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
  
-Il vous suffit de maintenant remplacer « gcc » par « i586-mingw32msvc-gcc » pour que le //​makefile//​ puisse créer ​un exécutable ​Windows.+===== Exécuter ​le programme ===== 
 +Utilisez [[:​wine]], ​un [[:​virtualisation|émulateur avec Windows]] ou Windows lui-même. 
 +  wine main.exe
  
 +===== Problème connus ====
 +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 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 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.
-Vous pouvez maintenant créer des exécutables Windows depuis Linux : il vous suffit juste de remplacer lors de vos compilations « gcc » par « i586-mingw32msvc-gcc », « g++ » par « i586-mingw32msvc-g++ », etc. +
- +
-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. ​ +
  
 ===== 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]] (éditions mineures), [[:​utilisateurs:​DarkShade]]//​+//​Contributeurs : [[utilisateurs:​hind_flo]],​ [[utilisateurs:​Ner0lph]], [[:​utilisateurs:​amiralgaby]] (éditions mineures), [[:​utilisateurs:​DarkShade]]//​
  • tutoriel/comment_utiliser_mingw32_pour_faire_des_executables_windows.1425912174.txt.gz
  • Dernière modification: Le 09/03/2015, 15:42
  • par 195.68.26.1