17 juillet 2014

GCC Cygwin MinGW and co


GCC est LA suite de compilation du projet GNU, surtout connue pour son compilateur C/C++ mais qui peut aussi compiler Ada, Fortran, Go, Java.

Bien sur on retrouve gcc sur tout les systèmes GNU (bsd, linux) mais aussi sur les Unix propriétaires (Aix, HPUX, MacOS, Solaris ...) et sous Windows. Ce qui fait de gcc LE système de compilation multi plates-formes par excellence.

Sous Windows, même si Microsoft propose, via les éditions “Express”, des versions allégées mais gratuites de sa suite Visual Studio on peut vouloir utiliser un compilateur multi plate-forme, multi langages, open source, avec des mises à jour régulières et conforme aux standards. Dans ce cas gcc est LE bon choix.


GNU GCC sous WINDOWS

Cygwin est une environnement très complet permettant de simuler un environnement POSIX (Unix, Linux, BSD) sous Windows. Les exécutables produits par cygwin/gcc dans cet environnement sont dépendants d’une DLL (cygwin1.dll) émulant l'environnement POSIX sous Windows.

Note : Microsoft Windows Services for Unix (SFU) est un environnement Unix/Posix développé par Microsoft, gratuit mais pas open source, proche de cygwin. SFU 3.5 inclus gcc 3.3. Une version allégée de SFU est incluse dans Win7 Enterprise et Ultimate.


MinGW (Minimalist GNU for Windows) est un portage des principaux outils de développement GNU sous Windows. Les exécutables produits par MinGW/gcc utilisent directement les DLL de Microsoft fournies avec Windows et ne nécessitent pas de couche d’émulation comme avec cygwin.

Actuellement MinGW fonctionne sur Windows 32 et 64 bits mais ne permet de produire que des exécutables 32 bits.

Optionnellement MinGW propose une ligne de commande Unix (bash) et quelques outils du monde Unix (grep, make …). Cet environnement Unix optionnel s’appelle MSYS et est basé sur cygwin mais il ne sert pas à produire des exécutables POSIX comme cygwin. MSYS est juste une facilité pour faire du ‘./configure et make’.

MinGW-w64 est un fork (non voulu) de MinGW. Son gros avantage est de pouvoir produire des exécutables 32 et 64 bits.

TDM-GCC de Twilight Dragon Media et une légère variante et un mix de MinGW et MinGW-w64.
Ces variantes sont principalement de nouvelles options pour gérer les exceptions suivant plusieurs méthodes : SJLJ, DWARF, SEH.

MingGW-builds même buts que TDM-GCC mais plus confidentiel.



GCC et les IDE C++ MULTI PLATE-FORME (Windows, Linux, Mac)

Le compilateur C/C++ de Microsoft fonctionne en ligne de commande mais est surtout réputé pour son interface graphique de qualité : Visual Studio. Mais Visual Studio n’est disponible que sous Windows. Heureusement il existe des environnements de développement graphiques multi plates-formes (Windows, Linux, Mac) utilisant le compilateur C/C++ de gcc. Voici les 3 principaux:

Code::Blocks Le compilateur par défaut pour Windows de Code::Blocks est TDM-GCC mais MinGW/gcc, cygwin/gcc, MSVC, BorlandC++, Watcom sont aussi supportés.

Qt va bien au-delà de l’IDE car il propose aussi une framework pour construire des interfaces graphiques utilisant le même code source sur toutes les plates-formes, y compris Android et iOS. MinGW/gcc et MVSC sont supportés

Eclipse est écrit en java donc plus lourd et plus lent que les IDE natifs. Eclipse est plus un atelier de génie logiciel qu'un simple IDE. Il fonctionne avec de (très) nombreux plugins et supporte ainsi plusieurs langages:  java, C/C++, PHP, SQL ... Le module CDT supporte plusieurs compilateurs dont MinGW/gcc et cygwin/gcc.