Updated 2015-10-02 23:54:12 by pooryorick

MinGW, short for Minimalist GNU for Windows, provides a port of GCC to Microsoft Windows, along a shell and a collection of utilities that constitute a typical minimal environment in which to build software with GCC. A fork, Mingw-64, has pulled ahead in terms of providing more recent versions of GCC that target 64-bit Windows systems

Description  edit

MinGW ("Minimalistic GNU for Windows") refers to a set of runtime headers, used in building a compiler system based on the GNU GCC and binutils projects. It compiles and links code to be run on Win32 platforms... providing C, C++ and Fortran compilers plus other related tools. If you see references to "mingw32" instead of "MinGW", they are referring to the same compiler system. The project's name changed from mingw32 to MinGW is to prevent the implication that MinGW will only works on 32 bit systems (as 64 and higher bit machines become more common, MinGW will evolve to work with them). MinGW uses the Microsoft runtime libraries, distributed with the Windows operating system. Unlike other ports of GCC to Windows, the runtime libraries are not distributed using Gnu's General Public License (GPL). You, therefore, do not have to distribute your source code with your programs unless, of course, you use a GPL library in your programs.

Check out the project history for the interesting story of How MinGW Began: http://www.mingw.org/history.

The msys and mingw download should be used to compile Tcl/Tk sources on a Windows machine. A zip file containing all the needed software is available here:

http://sourceforge.net/project/showfiles.php?group_id=10894

The msys and mingw download available above has been tested with current releases of Tcl and Tk. It is the same software available from mingw.org, except that all the needed software has already been packaged into a single download.

See Building Tcl/Tk with Mingw for info about building Tcl/Tk with Msys and Mingw.

The precompiled ActiveTcl is a popular alternative to building yourself. As it is built with MSVC, there have been some questions about compatibility for extensions that want to build with mingw or cygwin.

Kevan Hashemi went to the effort of confirming the following using ActiveTcl 8.4.16 ...

I have three libraries (iocpsock, mine from Cygwin and mine from MinGW) and two TclTks (mine from MinGW and Active State's) and therefore six combinations. I tried them all, made some changes, and tried them again. I browsed the web.

My conclusions are these:

  1. For at least the past two years, Visual C++, MinGW, and Cygwin all use the same calling convention by default. The default seems to be caller-cleanup, or __cdecl.
  2. By default, Cygwin-compiled libraries are dependent upon Cygwin API libraries. If you put copies of the Cygwin API libraries in the load path for any non-Cygwin TclTk, TclTk will freeze.
  3. You can avoid dependence upon the Cygwin API libraries when compiling on Cygwin with the "-mno-cygwin" compiler option, but you have to have the MinGW header files available instead (in which case, you could compile with MinGW instead, so why bother with Cygwin?).
  4. I prefer MinGW to Cygwin.

See Also  edit

MSYS
Building Tcl/Tk with Mingw
Also contains information on how to install mingw manually with gcc4.x
cygwin
Cross-Compiling Tcl/Tk 8.3.2 for WinNT [1]
DLL Creation in MingW [2]
critcl