You will need the GLib, cairo, Pango, ATK, gdk-pixbuf and GTK+ developer packages to build software against GTK+. To run GTK+ programs you will also need the gettext-runtime, fontconfig, freetype, expat, libpng and zlib packages.
The packages here are for people who develop software that uses GTK+. This page is not intended directly for end-users. It is expected that people who build installers for GTK+ applications for Windows bundle GTK+ with them.
These packages are not for developing or running programs that use the Cygwin Unix emulation environment. Cygwin has GTK+ packages available directly in its installer which you should use. Note that the Cygwin GTK+ uses the X11 backend, so you will need to also run an X11 server then when you run GTK+ programs on Cygwin, but presumably that is what Cygwin users want.
You are welcome to redistribute GTK+ binaries, including applications that bundle them, on other web sites, CD-ROM, and other media. You don't have to ask for permission. That's one of the points of Free Software. One important thing that the GNU licenses require is that you must also redistribute the source code. This usually means at least the gettext, GLib, GTK+, Pango and Atk sources.
What toolchain to use?
The most natural toolchain to use together with these packages would probably be the GNU compiler and other utilities. When targeting Windows, that combination is known as MinGW. Using Cygwin tools to build non-Cygwin Windows binaries is not recommended unless you are very careful and look out for mixups.
It is possible to use these packages also with Microsoft's compiler. However, the DLLs here use the
msvcrt.dll run-time library. This means that also applications that use the DLLs should preferably use the
msvcrt.dll run-time. Specifically, this means that you should not use newer versions of the Microsoft compiler than Visual C++ 6 without knowing exactly what you are doing.
Which Windows versions?
The current GTK+ stack uses APIs that are available only on Windows 2000 or later. Long obsolete versions of GTK+ did run on Win9x and NT 4, too.
There are three types of downloads below. Run-time provide only the DLLs and other files used you will need to run a GTK+-using application. Dev packages provide include files, import libraries, documentation and additional tools, and also for reference the script used to build the component in question. In case patches have been applied to the upstream sources before building, these are inline in the build script. Source packages provide the source code for the component in question. In most cases, this is simply the pristine upstream source release tarball, possibly copied to the same server as the binaries to satisfy the license.
GTK+ 2.24 is the current maintained version.
If you want to repackage the necessary run-time files together with your application into an installer, you can choose to leave out for instance message catalogs for languages that your application isn't localised to anyway.
If you find choosing, downloading and unpacking the individual zip archives below a chore, there is an all-in-one bundle of the GTK+ stack including 3rd-party dependencies. The bundle contains both run-time and developer files. Many of the developer files are relatively irrelevant. If you intend to redistribute the GTK+ run-time, you need to figure out which files you can leave out yourself. A new bundle will ideally be provided here whenever one of the member packages has been updated.
GTK+ individual packages
Required third party dependencies
The run-time packages here are required by the GTK+ stack.
Other third party software
These packages are not needed to run software that uses just GTK+, or to develop such software. These packages are used when building and running more complex applications.
This is a static build of pixman library. It is linked into the cairo DLL and there is no separate pixman run-time package.
This libpng build package provides
libpng14-14.dll. This package is built by me (Tor Lillqvist). Back in history the GTK+ stack was built against the gnuwin32 build of libpng. Confusingly, gnuwin32's older builds of libpng provided
libpng13.dll, and their newer builds provided
libpng12.dll. I don't know whether these builds actually are binary compatible even if the DLL name was different. To be safe, never rename DLLs.
This is the compression library used by glib and libpng. The above is just repackaged upstream DLL, slightly fixed headers, and import libraries. It provides
This program is useful for Makefiles and configure scripts and extensively used in building software according to the GTK+ and GNOME conventions using autotools. It uses a
database specifying inter-dependencies among software packages. It is used to get the compile and link flags needed when building software using libraries that provide pkg-config data. It requires GLib.
About freetype and fontconfig
These libraries are used by cairo and by Pango. They provide an alternative font backend. In a normal GTK+ application on Windows their functionality won't actually be used, though. GIMP is an exception, GIMP's text tool uses freetype and fontconfig APIs.
The GNU internationalization library. All of the GTK+ stack uses it. The DLL uses the traditional name intl.dll as it is ABI compatible with older builds of GNU libintl that used that DLL name.
Previously the "proxy-libintl" library that loads the gettext-runtime DLL dynamically was used, but now the GTK+ stack is just linked normally to intl.dll.