**MinGW** (*Minimalist GNU for Windows*) on GCC-kääntäjä ja sen ympäristö Windows-alustalle. MinGW sisältää varsinaisen kääntäjän lisäksi myös msys-ympäristön, jossa on muun muassa Bash-komentotulkki sekä GNU Binutils -ohjelmat.

MinGW:n mukana tulee C-, C++-, Fortran- ja ADA-kääntäjät sekä Windows API:n kanssa yhteensopivat otsikkotiedostot ja tuontikirjastot. MinGW ei ole osa GCC-projektia, vaan on oma irrallinen projektinsa.

MinGW:tä voidaan käyttää sellaisenaan tai muun kehitysympäristön kuten CodeBlocksin, Orwell Dev-C++:n tai Qt:n kanssa.

MinGW on ilmainen myös kaupalliseen käyttöön, mutta ilman takuita. MinGW:n otsikkotiedostot ovat public domainia ja kääntäjä työkaluineen GPL-lisensoituja. 

Vaikka MinGW on GCC-kääntäjä, sen perusrajapinta on Windows API, ei POSIX:n määrittämä.

Historia
--------

Colin Peters aloitti projektin joukolla otsikkotiedostoja ja tuontikirjastolla. Jan-Jaap van der Heijden halusi kääntää ohjelmia ilman riippuvuutta Cygwin-kirjastoon. Cygwin-projektin käyttämä lisenssi Windows API:lle oli liian rajoittava ja Anders Norlander teki projektiin vaihtoehtoiset.

Projektia kutsuttiin varhaisessa vaiheessa nimellä *gnu-win32*, joka ei ollut GNU-projektin nimeämiskäytännön mukainen.
MinGW-w64 oli vuonna 2005 aloitettu versio 64-bittiselle Windowsille, joka kehitettiin Objective C -kääntäjän siirtämiseksi. OneVisionin tekemä puhtaan huoneen versio hylättiin aluksi, koska siinä epäiltiin olleen käytetty suljettuja (ei-julkisia) tietolähteitä.

Käyttöliittymiä
---------------

MinGW:tä voi käyttää suoraan komentoriviltä, mutta yleistä on käyttää sitä jonkin kehitysympäristön kautta. Esimerkkeinä tavallisimmista MinGW:tä tukevista kehitysympäristöistä ovat CodeBlocks, Orwell DevC++, Qt sekä varsin kevyt Kuzya. Näistä CodeBlocks ja Orwell DevC++ on saatavilla MinGW:n TDM GCC version kanssa ja Qt tavallisella MinGW:llä.

Vertailu Cygwiniin ja Visual C:hen
----------------------------------

MinGW:n vuodesta 1998 alkaen julkaistut ensimmäiset versiot, jotka kulkivat nimellä *mingw32,* on kehitetty Cygwinin varhaisesta versiosta, mutta toisin kuin POSIX-pohjainen Cygwin, se tukee suoria Windows API-kutsuja POSIX:in sijaan.

MinGW ei ole yhtä käytetty kääntäjä kuin Visual C++, mutta monissa tapauksissa senkin käyttöä voi kokeilla, koska ainakin muutamat ohjelmakirjastot tukevat sitä. MinGW on taatusti ilmainen kehitysalusta. MinGW:n käyttö saattaa olla paikallaan silloin, kun siirtää valmista koodia esimerkiksi Linuxista Windowsiin.

Muun muassa 3D-pelintekokirjasto Irrlicht kääntyy CodeBlocks+MinGW:llä. 
Myös Ogren saa käännettyä CMaken avulla CodeBlocks+MinGW:llä käännettävään muotoon. Ainakin teoriassa MinGW tukee monia ohjelmointikirjastoja, joita GCC yleisemmin tukee. Näitä ovat mm fonttikirjasto FreeType.

MinGW on Visual C:hen verrattuna hieman 
hitaampi kääntämään ja tuottaa yleensä hieman hitaampaa koodia.*lähde?* MinGW teettää myös käyttäjällään monesti enemmän työtä kuin Visual C++, koska siitä puuttuu useasti valmiita binaarikirjastoja. Tällöin MinGW voi olla pahimmassa tapauksessa käyttäjälleen todella painajaismaisen hidas työkalu verrattuna Visual C++:aan. 
Eräs MinGW:n perusongelma on se, että se on osaksi Unix-tyylinen GCC, osaksi Windowsille sovitettu kääntäjä, jolloin molempien ominaisuuksia on menetetty.

Koska MinGW:n käyttämä C-kirjasto on Microsoftin MSVCRT, se ei ole täysin yhteensopiva GCC:n C98:n ja C99:n kanssa. Osin tätä ongelmaa on koetettu ratkaista kehittämällä libmingwex-kirjasto, mutta tämäkään ei tuo täyttä yhteensopivuutta.

TDM ja muita kehitelmiä
-----------------------

MinGW:n versionumero vastaa GCC:n versiota, mutta vastaava MinGW julkaistaan yleensä huomattavalla viiveellä.
MinGW:stä on monia epävirallisia "distroja", kuten esimerkiksi CodeBlocksinkin mukana tukeva TDM-GCC, jolla voi varsinaisesta MinGW:stä poiketen kääntää myös 64-bittisiä sovelluksia ja kirjastoja.
TDM-GCC:stä suositellaan yleensä käyttämään niin sanottua SJLJ-pakettia DW2-paketin sijaan, jos ei ole tarkempia vaatimuksia.

MinGW:stä on myös muita distroja, kuten nuwen.net, Win32 Devkit ja RubenV.

Katso myös
----------

* Codeblocks
* Dev-C++
* Qt

Aiheesta muualla
----------------

* Codeblocks Downloads NOTE: The codeblocks-12.11mingw-setup.exe file includes the GCC compiler and GDB debugger from TDM-GCC (version 4.7.1, 32 bit).
* Minimalist GNU for Windows Official
* MinGW MSYS
* MinGW MSYS DTK
* MinGW w64 MinGW:n w64-haara
* MinGW SourceForge
* MSYS SourceForge
* MsysDTk SourceForge

Lähteet
-------

1. ↑  MinGW C++ Download and Installation *ics.uci.edu*. Viitattu 3.7.2019. (englanniksi)
2. ↑  Minimalist GNU for Windows *mingw.org*. Viitattu 3.7.2019. (englanniksi)
3. ↑  Copyright (c) 2012 MinGW.org project
4. ↑  Welcome to MinGW.org Home of the MinGW and MSYS Projects
5. 1 2 3  Project of the Month, September 2005 *sourceforge.net*.  31.8.2005. Viitattu 5.7.2019. (englanniksi)
6. ↑  Richard Stallman: [Libtool Re: Naming a project gnu-win32?] *lists.gnu.org*.  18.9.2000. Viitattu 5.7.2019. (englanniksi)
7. 1 2  MinGW-w64 - for 32 and 64 bit Windows *sourceforge.net*. Viitattu 5.7.2019. (englanniksi)
8. ↑  Orwell Dev-C++
9. ↑  Qt Project MinGW
10. ↑   Kuzya
11. ↑  TDM-GCC
12. ↑
13. ↑  MinGW Distro - nuwen.net
14. ↑  Win32 DevKit (Arkistoitu – Internet Archive)
15. ↑