2008-10-13
An updated version of the Bundled TDM/MinGW installer has been released, now including the latest mingw32-make (3.81-20080326-3) as well as the mingw-runtime 3.15.1 bugfix release.

2008-08-29
GCC 4.3.2 TDM-1 is now available. This release is based on GCC 4.3.2, which has fixed several of the issues present in 4.3.1 in the vanilla sources. The remaining TDM patches for the 4.3 series have also been applied. Also, a new version of the TDM/MinGW installer has been released which fixed a minor bug and a failure to remove old components when upgrading.

2008-08-02
An installer program for TDM-GCC and MinGW has been released, capable of upgrading your installation when new versions are released.

2008-06-26
GCC 4.3.1 TDM-1 is now available. This release is based on GCC 4.3.1 but incorporates the same patches as the 4.3.0-tdm-3 release, plus an additional local fix for a minor bug.

2008-06-09
GCC 4.2.4 TDM-1 is now available. This release incorporates the same set of relevant TDM patches as the 4.2.3 release.

TDM's Experimental GCC/MinGW32 Builds
Binary packages of recent GCC releases targeting the MinGW compiler system
Main Page | Development Information | Bugs


SourceForge.net Logo
TDM GCC releases hosted by SourceForge
Consider making a donation to support the TDM-GCC project:

Donate directly through PayPal (no SourceForge account required)
Support This Project
Donate through SourceForge
Last updated: 2008-10-13 21:53

in a nutshell
The TDM-GCC builds are unofficially created packages designed to replace, for experimentation purposes, the official MinGW releases of GCC binaries. The TDM-GCC builds typically contain fewer changes from the vanilla sources and receive less testing than their official counterparts. Since these builds are not formally affiliated with or endorsed by the MinGW project, they should be treated as unstable and unsupported software -- in other words, use it at your own risk.


download
Release Download
TDM/MinGW Installer
1.808.3
Updated 2008-10-13
Bundled Installer: [tdm-mingw-1.808.3-f2.exe] (23.6 MB)
Includes C and C++ SJLJ packages from GCC 4.3.2 TDM-1, plus binutils (2.18.50-20080109-2), mingw-runtime (3.15.1), w32api (3.12), mingw32-make (3.81-20080326-3) and gdb (6.8-mingw-3).
On-Demand Installer: [tdm-mingw-1.808.3-webdl.exe] (323 KB)
No bundled packages; the packages selected in the installer will be downloaded on-demand.
(GCC Current Series)
4.3.2-tdm-1
Released 2008-08-29
Package core ada g++ fortran objc objc++
SJLJ Unwinding [tar.gz] (5.30 MB)
[zip] (5.09 MB)
[tar.gz] (20.1 MB)
[zip] (20.5 MB)
[tar.gz] (5.22 MB)
[zip] (5.71 MB)
[tar.gz] (3.98 MB)
[zip] (3.81 MB)
[tar.gz] (3.38 MB)
[zip] (3.25 MB)
[tar.gz] (3.59 MB)
[zip] (3.44 MB)
Dwarf-2 Unwinding [tar.gz] (5.32 MB)
[zip] (5.11 MB)
[tar.gz] (20.4 MB)
[zip] (20.8 MB)
[tar.gz] (5.23 MB)
[zip] (5.72 MB)
[tar.gz] (3.98 MB)
[zip] (3.81 MB)
[tar.gz] (3.39 MB)
[zip] (3.26 MB)
[tar.gz] (3.59 MB)
[zip] (3.44 MB)
(GCC Previous Series)
4.2.4-tdm-1
Released 2008-06-09
Package core ada g++ fortran objc objc++
SJLJ Unwinding [tar.gz] (5.13 MB)
[zip] (4.93 MB)
[tar.gz] (19.9 MB)
[zip] (20.1 MB)
[tar.gz] (4.54 MB)
[zip] (4.97 MB)
[tar.gz] (3.49 MB)
[zip] (3.34 MB)
[tar.gz] (2.88 MB)
[zip] (2.77 MB)
[tar.gz] (3.06 MB)
[zip] (2.94 MB)
All TDM-GCC packages, including previous releases and source code, are available for download from the TDM-GCC download page on SourceForge.

GCC is supposed to support language XYZ! Why isn't there a language pack available for it?
See the development page for details on languages that don't currently compile -- maybe you can provide a patch or alternate build command so that they can!


installation
These binary packages are designed as drop-in replacements for the MinGW project's official gcc packages. When using these packages, you are encouraged to start with a clean slate and install only the MinGW packages which are necessary to you. When using the TDM/MinGW Installer, do not install on top of a previous MinGW installation.

It is recommended that you use the TDM/MinGW installer and keep the default package selections. If you prefer to download and install individual packages by hand, you'll need the following packages for basic Windows development: You might also want to install: You'll need GDB particularly if you want to use an IDE with debugging support.

Decide whether to use the SJLJ or DW2 (Dwarf-2) exception model. As a general rule, you should choose the default SJLJ packages, unless you know you need faster exception handling and can guarantee you'll never need to unwind through non-DW2-compiled stack frames (such as a Windows callback). Then, for the exception model of your choice, download at least the "core" TDM-GCC package, which includes the required base files as well as support for the C language. You can also download any or all of the other TDM-GCC packages, depending on which of GCC's supported languages you'd like to use.

Extract the MinGW packages to an empty directory -- typically C:\MinGW. Then, extract the TDM-GCC package(s) and choose to overwrite any duplicate files that may exist. If you chose to use the "dw2" TDM-GCC packages, consider removing the "-dw2" suffix from the program names; see the README file or the usage notes for further details. Finally, consider adding the bin directory to your Windows PATH environment variable.

You can browse all released packages and source packages at the TDM-GCC download page on SourceForge. Beginning with the 4.3.0 release, all TDM-GCC releases are now available as gzipped tarballs or zip archives. Previous releases require 7-Zip for unarchiving.

GCC 4.1.2 With Python Installer:
Giovanni Bajo created an "all-in-one" user-friendly installer of an earlier 4.1.2 GCC-TDM release, which additionally features full Python integration. This installer is available at http://www.develer.com/oss/GccWinBinaries.


usage notes
Exceptions and DLLs:
The TDM-2 release of GCC 4.3.0 incorporated experimental builds of libgcc and libstdc++ as DLLs in order to allow exceptions to be thrown out of DLLs. With the more recent releases this has been dropped in favor of a ported version of 3.4.5's shared memory patch, because of various problems encountered in the DLL versions. (Once these problems are solved, the DLL versions will be included again.)

Therefore, you no longer need to add any additional command-line options to throw exceptions out of a DLL. You should, however, still add "-mthreads" to the command line any time you throw exceptions in a multi-threading context.

The ported exceptions/DLLs patch is experimental and has only received limited testing, so please report any bugs you encounter in throwing exceptions that are not present in the official MinGW 3.4.5 release.

TDM releases from the GCC 4.2 series cannot yet throw exceptions out of DLLs.

Dwarf-2 vs. SJLJ unwinding:
GCC supports two methods of stack frame unwinding: Dwarf-2 (DW2) or SJLJ (setjmp/longjmp). Until recently, only SJLJ has been available for the Windows platform. This affects you, the end user, primarily in programs that throw and catch exceptions. Programs which utilize the DW2 unwind method handle exceptions much more quickly than programs which utilize the SJLJ method. However, the DW2 method increases code size by a noticeable amount, and additionally cannot yet unwind (pass exceptions) through "foreign" stack frames: stack frames compiled by another non-DW2-enabled compiler, such as OS DLLs in a Windows callback.

This means that you should in general choose the SJLJ version of the TDM-GCC builds unless you know you need faster exception handling and can be certain you will never throw an exception through a foreign stack area.

As distributed, the SJLJ and DW2 packages of TDM-GCC can coexist peacefully extracted to the same directory (e.g. any files in common are for all intents and purposes identical), because the driver executables (the ones in the "bin" directory) are suffixed with "-dw2" for the DW2 build, and the libraries and other executables hide in another "-dw2" directory in "lib(exec)/gcc/mingw32". This allows you to use the same single addition to your PATH, and use DW2 exceptions only when you need them by calling "gcc-dw2", etc. If you truly want DW2 exceptions as the default when calling "gcc" (from Makefiles or configury systems, for example), you can rename or copy the suffixed executables to their original names.

TDM releases from the GCC 4.2 series use the SJLJ unwind method.

Warnings and errors:
GCC 4 represents a significant step forward in optimization capabilities, error detection, and standards compliance, and this is more true than ever with the advent of the 4.3 release series. For you, the end user, this will mean that code which used to compile and run without problems will almost certainly exhibit some warnings and maybe even a few errors.

These meaningful warnings and errors are a very good thing, as they help the programmer to write safer and more correct code. Unfortunately, there's also a chance you might encounter incorrect warnings or errors, ICE's (internal compiler errors, where the compiler makes a mistake and has to bail out), or even miscompilations (where your code is incorrectly compiled and produces the wrong result).

If you encounter an ICE while using a TDM-GCC build, feel free to file a bug report (see the Bugs page). With any other unexpected problem, you are urged to work from the assumption that it stems from user error, and ensure that your code is correct and standards-compliant.

OpenMP and pthreads-w32:
The TDM-GCC releases include support for OpenMP. Be sure to read the file README-gcc-tdm.txt, included in the core package, for usage notes on this topic.

Local Fixes and Changes:
See the Development page for information on patches to the vanilla sources included in the TDM-GCC releases.


bugs and known issues
These builds are provided primarily on an experimental basis. As such, they are expected to contain bugs. If you encounter a bug that you are certain is in the GCC sources (such as an ICE), or that is due to an issue in the building or packaging process, you are encouraged to report it. Please visit the Bugs Page for bug reporting instructions.


source code
The source code for the TDM-GCC binary releases is available from the TDM-GCC download page on SourceForge. It is distributed in the form of the original ("vanilla") separate source packages as downloaded, plus an additional "TDM Sources" package. The TDM Sources package includes unified diffs of any changes made to the vanilla sources, as well as the set of scripts used to build the binary releases.


license
The TDM-GCC packages contain binary distributions constituting a work based on GCC, which is licensed under the GPL. For further details, refer to the file "COPYING-gcc-tdm.txt" within the downloaded package. Additionally, TDM-GCC contains binary files constituting works based on libiconv, GMP, MPFR, and pthreads-w32, all of which are licensed under the LGPL; COPYING.lib-gcc-tdm.txt contains a copy of the LGPL.

The TDM-GCC distribution is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

TDM-GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.