Note : Une nouvelle version de ce tutoriel est disponible ici : https://devtricks.wordpress.com/installer-mingw-ou-comment-faire-du-gcc-sous-windows-version-2010/

Introduction

Pour tous ceux qui comme moi ont déjà utilisé gcc sous des systèmes UNIX ou GNU/Linux, il est parfois délicat de faire du développement sous Windows.

En effet il n’existe pas de compilateur par défaut installé sur le système. Pour remédier à cela il existe un bon nombre de solutions payantes ou gratuites qui ont chacune leurs avantages et leurs inconvénients. Parmi ces solutions il existe plusieurs portages de gcc pour Windows. Les deux plus connus sont Cygwin (wiki) et MinGW (wiki).

Ces deux solutions permettent d’utiliser gcc sous Windows, je préfère personnellement MinGW car contrairement à Cygwin, les exécutables créés ne nécessitent pas la présence d’une bibliothèque DLL pour être utilisés et les termes d’usage et de license sont (beaucoup) plus souples.

De plus, ce tuto présente les démarche pour installer MinGW en vue de l’utiliser avec Eclipse CDT 4.

Êtes-vous concernés ?

Ce tutoriel est fait pour vous si :

  • Vous voulez utiliser des commandes telles que gcc, ld, make, gdb, gprof sous Windows.
  • Vous cherchez un moyen de compiler des programmes en C ou C++ (voire en assembleur) sous Windows.
  • Vous voulez écrire des programmes en utilisant les API natives de Windows.
  • Vous voulez utiliser la « C standard library » ou la « C++ STL« .

Ce tutoriel n’est pas fait pour vous si :

  • Vous voulez utiliser des commandes telles que ls, cp, mv sous Windows.
  • Vous voulez faire du C ou du C++ sur MacOS, GNU/Linux, UNIX, BSD.
  • Vous voulez utiliser le .NET Framework ou les MFC.

MinGW

MinGW est une collection d’outils permettant de faire de la programmation, parmi ces outils sont présents des portages de GCC, GDB, MAKE…

C’est un projet libre et gratuit que l’on peut utiliser pour créer des programmes libres ou non.

Comme je l’ai dit plus haut, un de ces avantages est qu’il ne nécessite pas la présence de DLL intermédiaires (comme Cygwin, ou Visual Studio 2005). Un autre de ses autres avantages est la présence d’un portage de l’API Windows sous forme de headers et librairies.

MinGW se décompose en plusieurs packages remplissant chacun une fonction (compilation, debuggage, API, …).

Installation de MinGW

L’installation de MinGW peut être réalisée par plusieurs façons. Il existe des installeurs permettant d’installer ‘automatiquement’ MinGW en sélectionnant les packages nécessaires. Personnellement je conseille une installation manuelle en choisissant exactement les package que l’on souhaite utiliser.

Sélection des packages

Une installation fonctionnelle minimale de MinGW nécessite les packages suivants :

  • gcc-core : Le compilateur c
  • binutils : Les outils de linkage, assemblage, gestion des ressources, …
  • mingw-runtime : Les headers et librairies permettant d’utiliser les fonctions de base du standard C/C++
  • w32api : Les headers et librairires permettant d’utiliser les fonctions de l’API Windows

De plus si vous souhaitez utiliser MinGW avec CDT dans Eclipse, les packages suivants sont indispensables :

  • gdb : Le portage du debuggeur GNU gdb
  • mingw32-make : Le portage de l’outil make
  • gcc-g++ : Le compilateur c++

Les packages sont à récupérer sur SourceForge à l’adresse suivante : http://sourceforge.net/project/showfiles.php?group_id=2435#files

Pour les habitués de SourceForge, ça ne devrait pas poser de problème, pour les autres, le truc consiste à repérer les liens dont le type est « .gz » ou « .bz2 » (et PAS « Source .gz » ou « Source .bz2 ») et l’architecture est « i386 ». Il peut arriver pour certains packages à télécharger que l’architecture et/ou le type soit « None » (ex gcc 4.2.1).

Ces packages sont régulièrement mise à jour par l’équipe de MinGW, je vous conseille de prendre les dernières versions ‘stable’, ‘release condidate’ (ou ‘technology preview’ pour gcc).

Pour info, à l’heure ou j’écris ce tuto, les versions que j’utilise sont :

EDIT [16/02/2009] – Dépoussiérage :

De puis le 14/06/2008, les packages de MinGW ont évolués et donc voici les versions que j’utilise actuellement :

Installation des packages

Une fois la sélection et le téléchargement des packages terminés, l’installation est plutôt simple :

  1. Créer un répertoire qui sera la racine de MinGW, de préférence sans espace dans le chemin. Si vous comptez utiliser MinGW avec Eclipse-CDT 4, il est INDISPENSABLE que ce dossier soit « C:\MinGW » (avec « D:\MinGW » ça ne fonctionnera pas)
  2. Tout décompresser dans ce répertoire. (*)

Remarque : Si vous avez téléchargé la version 4.2.1 de gcc (et éventuellement g++) une étape supplémentaire est nécéssaire, il faut renommer « gcc-sjlj.exe » en « gcc.exe » et « g++-sjlj.exe » en « g++.exe » dans le dossier bin de votre installation.

* : Pour décompresser utiliser un utilitaire tel que 7zip, Winzip ou WinRar, les formats .gz et .bz2 sont en général reconnus par tous les logiciels de décompression à l’heure actuelle.

Edit [16/02/2009] : Correctifs (4.3.0 alpha)

Si vous utilisez comme moi la version 4.3.0 alpha de MinGW-GCC (core et c++) je vous conseille de corriger les deux bugs suivants :

Package g++ incomplet

Suite à une erreur de packaging, il manque des fichiers au package gcc-g++. Les fichiers concernés sont le répertoire lib\gcc\mingw32\4.3.0\include\c++\ext et tous les fichiers et sous-répertories de ce répertoire.

Pour les récupérer, téléchargez le package gcc complet : gcc 4.3.0 alpha, ce package contient le répertoire manquant (au même chemin), décompressez-le et copiez-le dans le dossier correspondant de votre installation de MinGW.

Source

Bug sur la fonctionnalité concept-check

La configuration de l’environnement (via les headers) pour la compilation c++ inclut une fonctionnalité (concept-check) qui provoque des erreurs avec l’inclusion de certains headers (comme <list> de la STL).

Pour désactiver le concept-check (et éviter ces erreurs) ouvrir le fichier lib\gcc\mingw32\4.3.0\include\c++\mingw32\bits\c++config.h à partir de l’installation de MinGW et mettre en commentaire la ligne suivante :

#define _GLIBCXX_CONCEPT_CHECKS 1

Source

Les petits plus

L’installation de MinGW obtenue comporte quelques inconvéniants, c’est pourquoi il est vivement recommandé, de suivre les étapes suivants pour finaliser l’installation.

Modification de la variable d’environnement PATH

Cette étape permet de pouvoir écrire directement dans l’invite de commande « gcc » sans avoir à spécifier le chemin vers gcc (ex : « C:\MinGW\bin\gcc »). De plus cette étape est indispensable si vous souhaitez utiliser MinGW avec Eclipse-CDT 4.

Pour réaliser ça, il faut ajouter à la variable d’environnement PATH le chemin vers le sous-dossier bin de la racine de l’installation de MinGW (ex : « C:\MinGW\bin »).

Pour Windows XP, la démarche à faire est :

Clic-droit sur l’icône du Poste de travail -> « Propriétés » -> onglet « Avancé » -> clic sur « Variables d’environnement » -> sélectionner « Path » dans les variables système -> clic sur « Modifier » -> Ajouter dans « Valeur de la variable » : « ; » suivi du chemin décrit plus tôt (ex: « ;C:\MinGW\bin »). -> Clic sur « OK » (trois fois) pour tout confirmer

Modification de la variable d\'environnement PATH

Ajout de la commande ‘make’

Si vous avez correctement suivi toutes indications (y compris les facultatives), le package mingw32-make qui correspond au portage de MAKE par MinGW devrait être installé. Le seul hic c’est que la commande « make » ne fonctionne pas, en effet pour appeller make, il faut écrire : « mingw32-make ». C’est pourquoi je recommande d’ajouter la commande « make » en suivant les étapes ci-dessous :

Créer un nouveau fichier avec le Bloc-Notes Windows contenant les lignes suivantes :

@echo off
mingw32-make %*
 

PS : la dernière ligne blanche ne doit pas être oubliée !

Enregistrer ce fichier dans le dossier bin de l’installation de MinGW (ex : « C:\MinGW\bin ») en l’appellant : « make.bat » (Attention à ce qu’il ne soit pas nommé « make.bat.txt »)

Après cela, lorsque vous tapperez « make » dans l’invite de commandes, tout se passera comme si c’était « mingw32-make » qui aura été écrit (avec les arguments transmis biensûr)

Tester l’installation

Une fois que l’installation est terminée je conseille de la tester en créant un bon vieux Hello World.

Pour cela créer un fichier hello.c avec n’importe quel éditeur de texte contenant :

#include <stdio.h>
int main(int argc, char *argv[])
{
  printf("Hello World\n");
}
 

Enregistrer ce fichier n’importe où, puis le compiler en exécutant dans l’invite de commande dans le dossier ou se trouve ce fichier la commande suivante :

gcc hello.c -o hello.exe

Si une erreur apparaît c’est que l’installation ne s’est pas correctement déroulée, dans ce cas bien vérifier que toutes les étapes du tuto ont correctement été respéctées (y compris la partie « petits plus » pour la variable d’environnement)

Puis exécuter le programme obtenu en tapant :

hello

Le message « Hello World » devrait s’afficher à l’écran.

Si aucun message d’erreur ou d’avertissement n’apparaît, c’est que MinGW est bien installé !

Conclusion

Avec cette installation vous pourrez maintenant utiliser gcc (et g++) autant que vous le souhaitez, la plupart (malheureusement pas tous) des programmes respectants la norme POSIX se compileront et s’exécuteront bien, de même pour les programmes utilisant l’API Windows native (Attention, cela ne concerne pas les programmes utilisant le .NET Framework)

Si vous avez suivi toutes les étapes (y compris les facultatives et les petits plus) vous pourrez aussi utiliser cet environnement de compilation avec Eclipse CDT version 4 qui est (sans vouloir faire de la pub) un environnement de développement C/C++ bien abouti et représentant une très bonne alternative à MS Visual Studio (propriétaire et payant)

Vous pourrez aussi utiliser des outils très pratiques comme gdb ou gprof que j’ai testés et qui fonctionnent très bien.

Dans des prochains tutos je vous décrirai comment installer Eclipse CDT 4 avec MinGW et comment installer les librairies Boost C++

Edit [19/08/2008] :

L’installation décrite dans ce tutoriel est parfaitement compatible avec la dernière version d’Eclipse (Ganymède – 3.4) et la dernière version de CDT (5.0)

20 Responses to “Installer MinGW, ou comment faire du gcc sous Windows”

  1. jeannich Says:

    Super!

    Enfin un tutorial recent, clair, et surtout qui fonctionne!
    Merci!


  2. […] avec. C’est pourquoi j’ai mis un petit coup de dépoussiérage sur les deux tutoriaux : Installer MinGW, ou comment faire du gcc sous Windows et Installer Boost sous Windows avec MinGW. J’y ai ajouté les nouvelles versions et les […]

  3. emardjean Says:

    Clair et efficace.
    Merci

  4. ricrac Says:

    Merci beaucoup c’est tres clair. (je sais c’est répétitif comme argument)
    Est ce que la version 4.4.0 fonctionne?
    Je ne l’ai pas encore essayé.

  5. superbob56 Says:

    Pour gcc 4.4 je l’ai testé avec un exemple basique et ça fonctionne bien. Je vais essayer de compiler Boost avec puis un projet utilisant Boost pour voir si ça fonctionne et ensuite je mettrai à jour ce tuto.

  6. superbob56 Says:

    J’ai compilé Boost avec gcc 4.4.0 sans problème, ainsi qu’un exemple de programme qui utilise Boost avec gcc 4.4.0.
    Donc à ce niveau là, pas de problème. Je modifierai le tuto en conséquence lorsque j’aurai plus de temps devant moi, parce que la nouvelle version de gcc apporte quelques changements sur la façon de l' »installer ».

  7. ricrac Says:

    Bonjour, Je viens d essayer avec gcc 4.4, mais quand je le lance, une fen^étre s ouvre et me dit libgmp-3.dll introuvable.
    J’utilise windows vista 32bits.

  8. ricrac Says:

    ça y est g résolu le problem, g téléchargé gmp-4.2.4-mingw32-dll.tar.gz et
    mpfr-2.4.1-mingw32-dll.tar.gz su le site
    http://sourceforge.net/project/showfiles.php?group_id=2435#files

    je les ai ensuite copié dans c:\MinGW\bin

  9. ricrac Says:

    c’est impec

  10. superbob56 Says:

    Concernant la version 4.4 de gcc, il ya un paquet de librairies dynamiques qui sont ajoutées (mpfr, gmp, pthread), de plus il faut faire attention car le linkage avec la librairie standard est dynamique par défaut en c++ (il faut se trimbaler libgcc_s_dw2-1.dll et/ou libstdc++-6.dll). Pour linker la librairies standard en statique, il faut utiliser l’option : -static-libgcc au linkage. Tout cela fera partie la future mise à jour du tuto !

  11. ricrac Says:

    C’est quoi Boost? C’est monstrueux a compiler je l’ai arrêté au bout d’une heure.
    Je voulai tester le compilateur. Apparement il marche bien.
    Est ce que on peut compiler plusieurs fichiers a la foi comme sous linux avec make -j ?

  12. superbob56 Says:

    Boost est un ensemble de librairies C++. J’ai un tuto qui explique comment l’installer sur ce blog. Sinon pour compiler avec -j je ne sais pas, je ne connais pas cette option.

    • kais Says:

      Merci pour cette clarté.
      S.V.P y a t’il possibilité de me montrer que ce que je dois ajouter pour compiler un fichier c pour RTEMS. Est ce que suffisante que j’ajoute les bibliothèques ,.

      • superbob56 Says:

        Désolé, je ne connais pas RTEMS et je n’ai aucune idée des paramètres à ajouter, il va falloir chercher par toi-même🙂

  13. gwennael Says:

    bonjour,
    voila j’ai un petit problème.
    de mon coté, j’ai voulu codé avec l’IDE netbeans. seulement, après avoir fait la manipulation, je ne peut compilé et j’obtiens ce résultat :

    ! ‚tait inattendu.
    mingw32-make: *** [.validate-impl] Error 255
    BUILD FAILED (exit value 2, total time: 218ms)

    le code, c’est simplement le « hello world »
    malgré la marge entre la date du dernier commentaire et le mien, j’espère que vous pourrai me répondre
    merci.

    gwennael

    • superbob56 Says:

      Désolé de répondre si tard, je viens de voir le commentaire :s.
      Je ne sais pas d’où vient ton problème et je ne pourrai pas t’aider plus que ça.
      Il faut peut-être chercher du coté de netbeans au niveau de la génération du fichier Makefile (c’est une partie qui n’est pas couverte par mon guide)

  14. Bernard MOUILLE Says:

    Merci beaucoup, très efficace

  15. griencompris Says:

    Merci mais je n’ai rien compris. comment ça fonctionne le C ? j’y comprends rien !!!

    • superbob56 Says:

      Pour comprendre le C le mieux c’est de lire un bon bouquin ou de suivre des cours. Ça ne s’apprend pas en un jour ! Bon courage !


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :