GCC for Windows 64 & 32 bits

This is an old revision of the document!


Mingw-w64 brings free software toolchains to Windows. It hosts a vibrant community which builds and debugs software for Windows while providing development environment for everyone to use.

It has forked mingw.org in order to move forward and provide 64bit support and support for new APIs and has brought countless improvements since its creation in 2007.

Version 4.0 is out. See the change summary and check the downloads.

Website is evolving. The website is changing; please forgive us for a small lack of polishing for a few days and please report issues you encounter.


More than a million lines of headers are already there and the count is continuously increasing to stay up-to-date with new versions of Windows.


Mingw-w64 is not a compiler project but a project used with compilers. Of course, for simplicity, many pre-packaged toolchains are available in the Downloads section and several of them come with additional libraries and tools for extra convenience.

Libraries and Runtime

All the additional libraries needed to link your code and run it directly on Windows are provided along with libraries like winpthreads which provides support for C++11 threading and winstorecompat, a work-in-progress convenience library to ease conformance with the Windows Store.


In addition to the usual compilers, linkers and debuggers from the toolchain, mingw-w64 provides gendef to generate Visual Studio .def files from a .dll, genidl to generate .idl files from a .dll and widl to compile them.

Version 4.0

  • 32bit ARM thumb software math (Thanks to André Hentschel!).
  • New ftw() support for gcc-5.x support.
  • Experimental printf changes - Ability to print 128bit integers (%I128*) and Decimal Floats (%H, %D), disabled by default. Build the CRT with –enable-experimental to use.
  • Updated OpenGL 4.5 headers.
  • Better DirectX 11 support.
  • Better Windows 7, 8/8.1 API support.

Version 3.0

  • Required for GCC 4.8
  • Much improved floating point math performance
  • Improved MSVC intrinsics performance
  • Addition of wide variants in C99 printf and
  • Partial C1X secure CRT
  • Partial MS Secure CRT templates for
  • Vastly improved Windows 7 and 8 win32 API
  • POSIX-style Large File
  • Winpthread: new library, pthreads implementation for
  • Winstorecompat: new library for Windows Store compatibility (WIP)

Version 2.0

Version 2.0 focused on expanding Windows Vista/7 API support.

The Sourceforge.net project page has the full list of releases and more details.

Latest Activity

Evgeniy posted a comment on ticket #94

button like 'select all' 'unselect all'

Evgeniy created ticket #94

Adding group selection in win-builds

Martin Storsjö committed [e8583c]

crt: Share odbc32.def between lib64 and libarm32

Martin Storsjö committed [17826c]

crt: Regenerate Makefile.in

LH_Mouse modified ticket #712

Compilation/linking fails when compiling with -msse2/msse3/msse4.1/msse4.2

LH_Mouse posted a comment on ticket #712

Fixed on master. On i686 -msse2 is not enabled by default, hence MemoryBarrier() is left unexpanded. GCC should have generated a warning about implicit function declaration which was removed in C99, but it doesn't because the function in question is brought in by a system header. An external definition is actually available, so there is neither compiler warnings nor linker errors.

LH_Mouse committed [463f00]

include/winnt.h: involve <emmintrin.h> when attempting to use SSE2

Martin Storsjö committed [0f9569]

headers: Complete the winnt.h structs/defines for ARM64

Jacek Caban committed [023eb0]

Add IDWriteTextAnalyzer1 related declarations on dwrite_1.h

bart posted a comment on ticket #710

pthread_cond_signal() should never deadlock. However, the attached program uses the POSIX API in a way that is does not guarantee that pthread_cond_signal() wakes up anything. A quote from the POSIX spec (http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_cond_broadcast.html): The pthread_cond_broadcast() or pthread_cond_signal() functions may be called by a thread whether or not it currently owns the mutex that threads calling pthread_cond_wait() or pthread_cond_timedwait() have associated...