Qu'il s'agisse de la compilation de SQLite, OpenLDAP ou encore BerkeleyDB sous Windows pour des études ou des développements, MinGW for Windows (Minimalist Gui for Windows) est une excellente solution technique autonome qui évite l'installation de la suite Microsoft Visual Studio avec ses composants annexes multiples. MinGW n'est pas intrusif dans la plateforme Windows (mise à jour de la base de registres etc...) et offre par ailleurs, en plus des compilateurs C, C++, gcc, Ada, Fortran etc..., la plupart des utilitaires Unix vitaux dans un environnement bourne shell comme gawk, awk, sort, comm, sed, grep, find etc... utilitaires qui manquent cruellement sous Windows.
Ce tutoriel présente l'installation manuelle en lignes de commandes de MinGW/MSYS for Windows.
MinGW est un environnement de développement très léger pour créér des applications Windows à partir de sources et présente l'avantage de ne dépendre d'aucune machine virtuelle d'un fournisseur tiers (C Runtime DLL), notamment les DLLs de Microsoft comme par exemple MSVCRT.dll. MinGW ne fournit pas un environnement virtuel pour le déploiement d'applications POSIX sur Microsoft, dans ce contexte, utiliser cygwin qui est une suite bien plus complète.
MinGW est un dérivé plus léger de Cygwin 1.3 et permet de porter la plupart des applications Open Source sur la plateforme MS Windows.
MinGW inclut :
MSYS (Minimal SYStem) est un interpréteur Bourne Shell (sh) et inclut une sélection de quelques utilitaires Unix indispensables (make, awk, sed, grep...).
L'archive mingw-get-0.1-mingw32-alpha-5-bin.zip est téléchargée depuis le site sourceforge.net ( mingw-get-0.1-mingw32-alpha-5-bin.zip ), archive décompressée ensuite dans le répertoire C:\mingw (%MINGW_DIR%). Il est recommandé de ne pas utiliser des noms de répertoires contenant des espaces ou autres caractères spéciaux.
Le binaire mingw-get est dans le répertoire %MINGW_DIR%/bin.
Dans une invite de commandes DOS, la variable %MINGW_DIR%/bin est ajoutée dans la variable %PATH% Windows.
C:\> set MINGW_DIR=C:\mingw C:\> set PATH=%MINGW_DIR%\bin;%PATH%
Le binaire mingw-get installe les packages, pour comprendre son utilisation, exécuter ce binaire avec l'option --help :
C:\> mingw-get --help
mingw-get [OPTIONS] ACTION package-spec [package-spec ...] Manage MinGW and MSYS installations (Command-line user interface). Options: --help, -h Show this help text --version, -V Show version and licence information Actions: update Update local copy of repository catalogues install Install new packages remove [not implemented] Remove previously installed packages upgrade [not implemented] Upgrade previously installed packages Package Specifications: [subsystem]-name-[component]: msys-bash-doc The 'doc' component of the bash package for MSYS mingw32-gdb All components of the gdb package for MinGW See /mingw/var/lib/mingw-get/data/*.xml for possible package names and the components associated with each.
Le catalogue des packages est contenu dans des fichiers xml dans le répertoire %MINGW_DIR%\var\lib\mingw-get\data\. Le catalogue n'est initialisé qu'au premier appel de la commande mingw-get install
C:\> mingw-get install
C:\mingw>mingw-get install mingw-get: *** WARNING *** C:\mingw\var/lib/mingw-get/data/profile.xml: user configuration file missing mingw-get: *** INFO *** C:\mingw\var/lib/mingw-get/data/defaults.xml: trying system default configuration Load catalogue: C:\mingw\var/lib/mingw-get/data/package-list.xml Load catalogue: C:\mingw\var/lib/mingw-get/data/mingw32-package-list.xml Load catalogue: C:\mingw\var/lib/mingw-get/data/mingw32-autoconf.xml ...
Parfois des erreurs surviennent dans le chargement des fichiers XML du catalogue :
mingw-get: *** ERROR *** Sync Repository: http://prdownloads.sourceforge.net/mingw/msys-lndir.xml.lzma?download: download failed mingw-get: *** WARNING *** Load catalogue: FAILED: C:\mingw\var/lib/mingw-get/data/msys-lndir.xml
Dans ces cas de figure, relancer la commande jusqu'à obtenir un téléchargement réussi pour les catalogues en échec :
C:\> mingw-get install
C:\mingw>mingw-get install ... Load catalogue: C:\mingw\var/lib/mingw-get/data/msys-lndir.xml ...
Le compilateur GNU C et ses packages dépendants (mingwrt, w32api et binutils) sont d'abord installés :
C:\> mingw-get install gcc > mingw-install-gcc.log 2>&1
downloading: w32api-3.15-1-mingw32-dev.tar.lzma: 8192 b downloading: w32api-3.15-1-mingw32-dev.tar.lzma: 16384 b ... install: gcc-4.5.0-1-mingw32-lic.tar.lzma install: mingwrt-3.18-mingw32-dll.tar.gz ...
C'est la version 4.5.0.1 de gcc qui est disponible au cours de l'installation.
Repérer dans le fichier de log toute éventuelle erreur de téléchargement, car comme pour les catalogues, des erreurs de synchronisation peuvent se produire. Dans ce cas de figure relancer l'installation. Les installations peuvent être relancées plusieurs fois de suite sans aucun problème, le mot clé "no change" est notifié lorsque le package est déjà installé :
... no change: w32api-3.15-1-mingw32-dev.tar.lzma no change: mingwrt-3.18-mingw32-dev.tar.gz ...
Le compilateur C++ est installé avec l'option g++
C:\> mingw-get install g++ > mingw-install-g++.log 2>&1
... downloading: gcc-c++-4.5.0-1-mingw32-bin.tar.lzma: 5398195 b ... install: gcc-c++-4.5.0-1-mingw32-bin.tar.lzma
L'utilitaire make est installé avec l'option mingw32-make
C:\> mingw-get install mingw32-make > mingw-install-mingw32-make.log 2>&1
... downloading: make-3.82-3-mingw32-bin.tar.lzma: 213523 b install: make-3.82-3-mingw32-bin.tar.lzma
Le debogueur GNU gdb est également installé en cas de besoin avec l'option gdb
C:\> mingw-get install gdb > mingw-install-gdb.log 2>&1
... downloading: gdb-7.2-1-mingw32-doc.tar.lzma: 462796 b install: libexpat-2.0.1-1-mingw32-dll-1.tar.gz install: gdb-7.2-1-mingw32-bin.tar.lzma install: gdb-7.2-1-mingw32-doc.tar.lzma
L'environnement shell MSYS est installé également avec mingw-get avec l'option msys-base :
C:\> mingw-get install msys-base > mingw-install-msys-base.log 2>&1
... install: libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma install: libintl-0.17-2-msys-dll-8.tar.lzma install: coreutils-5.97-3-msys-1.0.13-bin.tar.lzma install: libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma install: libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma install: less-436-2-msys-1.0.13-bin.tar.lzma install: grep-2.5.4-2-msys-1.0.13-bin.tar.lzma install: diffutils-2.8.7.20071206cvs-3-msys-1.0.13-bin.tar.lzma install: sed-4.2.1-2-msys-1.0.13-bin.tar.lzma install: gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma install: libpopt-1.15-2-msys-1.0.13-dll-0.tar.lzma install: zlib-1.2.3-2-msys-1.0.13-dll.tar.lzma install: libmagic-5.04-1-msys-1.0.13-dll-1.tar.lzma install: liblzma-4.999.9beta_20100401-1-msys-1.0.13-dll-1.tar.gz install: xz-4.999.9beta_20100401-1-msys-1.0.13-bin.tar.gz install: texinfo-4.13a-2-msys-1.0.13-bin.tar.lzma install: tar-1.23-1-msys-1.0.13-bin.tar.lzma install: make-3.81-3-msys-1.0.13-bin.tar.lzma install: gzip-1.3.12-2-msys-1.0.13-bin.tar.lzma install: file-5.04-1-msys-1.0.13-bin.tar.lzma install: findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma install: cygutils-dos2unix-1.3.4-4-msys-1.0.13-bin.tar.lzma install: msysCORE-1.0.16-1-msys-1.0.16-ext.tar.lzma install: bzip2-1.0.5-2-msys-1.0.13-bin.tar.lzma install: bash-3.1.17-4-msys-1.0.16-bin.tar.lzma install: msys-base-2010080900-msys-bin.meta
Ce package installe les utilitaires Unix comme sed, gawk, awk, find, grep, gzip, tar etc... Par défaut vim (VI meilleur) n'est pas installé dans msys-base, pour installer vim :
C:\> mingw-get install msys-vim > mingw-install-msys-vim.log 2>&1
... install: vim-7.2-2-msys-1.0.13-bin.tar.lzma ...
L'environnement shell est installé dans le répertoire %MINGW_DIR%/msys/1.0. Pour démarrer l'environnement Shell MSYS, exécuter le script msys.bat localisé dans %MINGW_DIR%/msys/1.0. Un environnement Unix Like est alors à disposition en mode console.
$ cd / $ ls -l total 47 drwxr-xr-x 2 ADMIN Administrators 0 Nov 26 19:22 bin drwxr-xr-x 2 ADMIN Administrators 0 Nov 26 19:37 etc drwxr-xr-x 3 ADMIN Administrators 0 Nov 26 19:14 home -rw-r--r-- 1 ADMIN Administrators 2238 Jul 11 2009 m.ico -rwxr-xr-x 1 ADMIN Administrators 7167 Sep 29 02:48 msys.bat -rw-r--r-- 1 ADMIN Administrators 37758 Jul 11 2009 msys.ico drwxr-xr-x 2 ADMIN Administrators 0 Nov 26 19:28 postinstall drwxr-xr-x 3 ADMIN Administrators 0 Nov 26 19:13 sbin drwxr-xr-x 8 ADMIN Administrators 0 Nov 26 19:22 share
Une fois l'environnement MSYS Shell installé et démarré, exécuter le shell /postinstall/pi.sh
$ /postinstall/pi.sh
This is a post install process that will try to normalize between
your MinGW install if any as well as your previous MSYS installs
if any. I don't have any traps as aborts will not hurt anything.
Do you wish to continue with the post install? [yn ] y
Do you have MinGW installed? [yn ] y
Please answer the following in the form of c:/foo/bar.
Where is your MinGW installation? C:/mingw
Creating /etc/fstab with mingw mount bindings.
Normalizing your MSYS environment.
You have script /bin/cmd
Oh joy, you do not have C:/mingw/bin/make.exe. Keep it that way.
Le script shell pi.sh créé le point de montage /mingw dans l'environnement MSYS Shell, point de montage qui correspond à %MINGW_DIR%. Les points de montage sont évoqués ultérieurement.
Le fichier /etc/profile définit les variables MSYSTEM, HOME, PATH, PS1 etc... lors du lancement de MSYS Shell, il peut être modifié à souhait en fonction de ses préférences. Un seul élément à ne pas supprimer, la mise à jour de la variable $PATH avec l'ajout de .:/usr/local/bin:/bin:/mingw/bin
export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
Le fichier /etc/fstab ou la commande mount permettent dès lors de monter des répertoires Windows déjà existants dans l'environnement MSYS Shell, ainsi il est possible d'utiliser les précieux utilitaires Unix (sed, awk, find...) sur des répertoires Windows.
Pour monter le répertoire D:\intranet\sqlpac dans l'environnement MSYS Shell avec comme point de montage /intranet :
$ mount D:\\intranet\\sqlpac /intranet
La commande mount met à jour automatiquement le fichier /etc/fstab, fichier qui stocke les points de montage :
$ cat /etc/fstab
C:/mingw /mingw D:/intranet/sqlpac /intranet
La commande umount quant à elle démonte un point de montage. La commande umount retire également automatiquement les entrées dans /etc/fstab.
Le fichier /etc/fstab peut être également directement édité avec vim. Les montages et démontages sont réalisés automatiquement lors de l'enregistrement de ce fichier.
Pour valider très rapidement et sommairement la plateforme, créer une simple application console, par exemple un programme C qui affiche hello :
$ cd $HOME vim hello.c
#include <stdio.h>
int main(int argc, char **argv)
{
printf ("Hello\n");
return (0);
}
Appeler gcc pour compiler le programme c en fichier objet hello.o :
$ gcc -c hello.c
L'exécutable hello.exe est généré également avec gcc :
$ gcc -o hello hello.o
$ hello
Hello
| Version | Date | Commentaires |
|---|---|---|
| 1.0 | 11/2010 | Version initiale |
MinGW.org
MinGW.org - HOWTO Install the
MinGW (GCC) Compiler Suite
Laura Michaels' MinGW FAQ