Requirements
Packages
You will need to get the GLib,cairo,Pango,ATK,and GTK+ developer packages to build against GTK+. To run GTK+ programs you will also need the libpng and zlib packagages,and if your code uses gettext for internationalisation and/or you want GTK+ internalisation,the gettext-runtime package.
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 use the
msvcrt.dll runtime library. This means that also applications that use the DLLs should preferrably use the
msvcrt.dll runtime. 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.
Stable Release
There are 3 types of download options below.
Binaries provide only the DLLs and other files used you will need to run your GTK+-using application.
Dev packages provide include files,import libraries,documentation and additional tools.
Source packages provide the source code for the component in question.
If you want to repackage the necessary runtime 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.
All-in-one bundle
If you find choosing,downloading and unpacking the individual zip archives below a chore,here is an all-in-one
bundle of the GTK+ stack including 3rd-party dependencies. This bundle contains both binaries and a lot of developer files,many of which are irrelevant to most developers. 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 be provided whenever one of the packages it consists of is updated.
GTK+ individual packages
Package | Version | Downloads | ||
---|---|---|---|---|
GLib | 2.20.0 | Binaries | Dev | Sources |
GTK+ | 2.16.0 | Binaries | Dev | Sources |
Pango | 1.24.0 | Binaries | Dev | Sources |
ATK | 1.24.0 | Binaries | Dev | Sources |
cairo | 1.8.6 | Binaries | Dev | Sources |
Third Party Dependencies
You won't need all of these packages to just use GTK+ Some of the optional packages are needed for building applications like GIMP on Windows. required packages are illustrated with
.
Package | Version | Downloads | |||
---|---|---|---|---|---|
zlib | 1.2.3 | Binaries & Dev | |||
win_iconv | 20080320 | Dev & Sources | |||
GNU libiconv | 1.9.1 | Binaries & Dev | Sources | ||
win_iconv DLL | 20080320 | Binaries & sources | |||
gettext-runtime | 0.17 | Binaries | Dev | Sources | |
libpng | 1.2.34 | Binaries | Dev | - | |
libjpeg | 6b | Binaries | Dev | - | |
libtiff | 3.8.2 | Binaries | Dev | - | |
pkg-config | 0.23-2 | Tool binaries | Sources | ||
Freetype | 2.3.6 | Binaries | Dev | Sources | |
Fontconfig | 2.4.2 | Binaries | Dev | Source & Patch |
|
libexpat | 2.0.0 | Binaries | - | - | |
dirent | - | - | Dev | - | |
proxy-libintl | 20080918 | Binaries & sources |
About libpng
This is an image file format library used by GTK+,and required.
The libpng package linked to above provides
libpng12-0.dll. This package is built by me (Tor Lillqvist). PrevIoUsly 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.
About zlib
This is the compression library used by libpng,libjpeg and libtiff.
About win_iconv
win_iconv is an implementation of
iconv for Windows by Yukihiro Nakadaira that has a much smaller footprint than GNU libiconv. The win_iconv package above includes the header file,static archive library and the source file. This library is linked statically into GLib and thus not needed separately at run-time.
About iconv.dll
GLib 2.12.4 and earlier link to iconv in a separate DLL,iconv.dll. This can either be the GNU libiconv
iconv.dll,or the identically named win_iconv_dll one which obviosuly is intented to be a drop-in replacement.
About gettext
The GNU internationalization library. All of the GTK+ stack uses it,but through proxy-libintl (see below) so it is actually optional at run-time.
About libjpeg and libtiff
These libraries are used by the gdk-pixbuf library in GTK+,and for instance by GIMP.
About pkg-config
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
databasespecifying 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. This requires GLib 2.x.
About freetype
This is used by GIMP and by Pango's pangoft2 library. For just GTK+ applications you will not need it.
About fontconfig
Fontconfig is used by the FreeType2 backend in Pango (pangoft2) and by GIMP. Contrary to what many seem to think,fontconfig is in no way dependent on X11,so it does make some sense to use it on Windows. GTK+ does not use pangoft2,so you probably will not need this unless for GIMP. This is a slightly fixed version of fontconfig 2.4.2 from the date indicated.
About libexpat
This is required by fontconfig.
About dirent
This is the public domain implementation of dirent.h from
MinGW. It is needed by Microsoft Visual C++ users that want to compile GLib. Not directly related to GLib.
About proxy-libintl
proxy-libintl is a very small static library. It acts as a proxy for the
intl.dll from gettext-runtime,loading it dynamically,and failing gracefully. Fallback dummy functions are used if
intl.dll isn't found. It is a static archive and the intent is to start linking this into the binaries in the GTK+ stack instead of referring directly to
intl.dll. This enables application packagers to leave out the gettext-runtime binaries if they don't need or want to support i18n,without having to build own versions that don't use
intl.dll.
When building DLLs against the proxy-libintl static library and using the GNU linker's auto-export feature (i.e. not using a .def file,and not using __declspec(dllexport)),it is a good idea to pass the -Wl,--exclude-libs=libintl.a in your LDFLAGS so that the libintl functions don't get exported from your DLL.
[url]http://www.gtk.org/download-windows.html[/url]