---
title: "Compiling GtkSharp"
lastmodified: '2009-07-30'
redirect_from:
- /Compiling_GtkSharp/
---
Compiling GtkSharp
==================
Introduction
------------
This article describes how to build Gtk# \>= 2.12.9 on Windows.
We recommend to use Gtk# trunk from our [AnonSVN](/SourceCodeRepository) repository which currently targets Gtk+ 2.14 as it builds much faster.
Dependencies
------------
Building GTK# 2 uses a similar process as [Compiling_Mono_on_Windows](/Compiling_Mono_on_Windows). First, we'll need some more dependencies:
- Microsoft's .NET Framework and SDK. If you're building Gtk# 2.12, you need version 1.1 whilst trunk builds against .net 2 or any later version. Do **not** try to build Gtk# 2.12 against .net 2.
The MS .NET SDK is needed because the gtk-sharp2 build currently uses the disassembler(ildasm) and gacutil from the MS SDK for a portion of the build.
Now the Gtk dependencies:
- Download the latest Gtk+ bundle from [http://www.gtk.org/download-windows.html](http://www.gtk.org/download-windows.html)
If you want to build Glade#(optional):
- iconv and libxml2 from [http://xmlsoft.org/sources/win32/](http://xmlsoft.org/sources/win32/)
- libglade-bin and libglade-dev from the gladewin32 project: [http://sourceforge.net/project/showfiles.php?group_id=98754](http://sourceforge.net/project/showfiles.php?group_id=98754)
Extract these zip files to the same location by using Microsoft's xcopy or the very useful copy function in 7-zip which can also handle directory structures.
Add the ZIP_FILES\\bin directory to your path(Windows XP: control panel-\>System-\>Advanced-\>Environment variables-\>Path) and run gtk-demo.exe in the same directory to test your Gtk+ installation.
As we have to use the win32 pkg-config from the Gtk+ bundle(because has supports for dynamic disks such as C:/devel/target/... needed by the Gtk+ pkg-config files), create a symlink from your ZIP_FILES/share/aclocal/pkg.m4 file to /usr/share/aclocal/pkg.m4:
``` bash
ln -s /cygdrive/c/ZIP_FILES/share/aclocal/pkg.m4 /usr/share/aclocal/pkg.m4
```
If the target already exists, uninstall the cygwin pkg-config package.
Now you should create some symlinks to shorten the cygwin paths and to avoid spaces. For example:
``` bash
ln -s "/cygrive/c/Windows/Microsoft.NET/Framework/v2.0" /dotnet
ln -s "/cygdrive/c/Program Files/Microsoft.NET/SDK/v2.0/Bin" /sdk
ln -s "/cygrive/c/ZIP_FILES/bin" /gtk
```
Build process
-------------
Make sure that Mono is not in the path, and put the MS tools in the path. Here's an example of how to do this from the cygwin bash shell:
``` bash
export PATH="/dotnet:/sdk:/gtk/bin:/bin"
```
Now we can start building. Unpack the gtk-sharp2 source and enter it's directory. Here are the commands to build:
``` bash
export CC="gcc -mno-cygwin" # Make sure we're not dependent on cygwin
./configure --prefix=/tmp/install # Choose any prefix you like, call bootstrap-2.xx instead when building SVN
make
make install
```
Add the INSTALL_PREFIX\\lib directory to your Windows(not Cygwin!) Path as well. The .NET dll's will be placed in the MS GAC. Enjoy!
Troubleshooting
---------------
- The most likely reason for the build to fail is that you are using Cygwin't pkg-config package instead of the one that is shipped with the Gtk+ bundle. Make sure that you uninstalled Cygwin's pkg-config and put "/gtk/bin" in your PATH.
- Building Gtk# 2.12 with .net \>= 2.0 is known not to work.
- If you still can't get it to work, write a mail to the Gtk# mailing list (see [Mailing_Lists](/Mailing_Lists)).
Links & Resources
-----------------
- Gtk# installer for .net from [Downloads](/Downloads)
- Up to date glib ([http://anonsvn.mono-project.com/viewcvs/\*checkout\*/trunk/release/packaging/defs/mono](http://anonsvn.mono-project.com/viewcvs/*checkout*/trunk/release/packaging/defs/mono)) and gtk ([http://anonsvn.mono-project.com/viewcvs/\*checkout\*/trunk/release/packaging/defs/gtk-sharp](http://anonsvn.mono-project.com/viewcvs/*checkout*/trunk/release/packaging/defs/gtk-sharp)) dependencies that are being used for the Mono Windows Combined Installer.