From GIMP Developer Wiki
Revision as of 21:20, 11 November 2019 by Salamandar (Talk | contribs)

Jump to: navigation, search

This page contains things that you should know in order to build GIMP.

GIMP's dependencies

Gimp depends on quite a few libraries, including but not limited to:

  • GLib – a library used by many gnome applications, containing utilities and common data structures for programs written in C.
  • GObject - a library for implemnting objects (as in Object-Oriented-Programming) in C.
  • GTK+ – a graphical toolkit for building cross-platform user interfaces. GIMP 2.99 and later need GTK 3.0.
  • Cairo – a 2D graphics library, used for drawing some of GIMP’s widget and also used by Gtk+.
  • Python-Cairo: Python bindings for Cairo
  • Pango – a library for laying out and rendering text, used also in Gtk+.
  • MyPaint - a painting library that allows a lot of flexibility for brushes; it needs both libmypaint (the libmypaint-v1 branch) and mypaint-brushes (the v1.3.x branch).

GIMP's core depends also on two libraries which are mainly (but not only) intended to be used with GIMP:

  • babl – a library for converting between pixel formats, heavily used by GIMP when communicating with GEGL.
  • GEGL – a graph based image processing library, heavily used in GIMP’s core.
To build GIMP 2.10, you need the GEGL version from git branch 'gegl-0-4'.
To build GIMP master (= the development version of GIMP), you need the GEGL version from git branch 'master'.

Some of GIMP's plugins depend on (at least) the following libraries

  • librsvg – a library for rendering SVG files.
  • libpng – a library for reading and writing PNG image files. Used by Gtk+, GIMP and GEGL.
  • libexif - a library for manipulating exif data (image metadata).
  • libwmf - a library for working with WMF files.
  • libtiff - a library for reading and writing TIFF image files.
  • libjpeg - a library for reading and writing JPEG image files.
  • liblcms - the Little Color Management System, a library for working with color profiles.

This list is incomplete.

See also the file INSTALL (or INSTALL.in in GIMP master).

Build system

Preparing for Building

You may need to install some software to build GIMP, including a C compiler, make, GNU autotools, meson, and more, plus many dependencies. See the OS-specific pages for details:

1. Choose a place to install everything, and set a variable to point to it:

If you're building Gimp from master, you may not want to install it in your system prefix, as you may break your system Gimp installation, or get odd behavior, especially if you also have a system version of GIMP installed.

You should then create another prefix directory where Gimp (and some dependencies) may be installed safely.

On Linux you could use $HOME/.local.

Let's name your custom prefix :


3. Set some environment variables:

Some dependencies may be installed in this prefix too, so the build system should be able to find them :

# Used to find programs/tools during build
export PATH="${GIMP_PREFIX}/bin:$PATH"

# Used to detect the build dependencies
export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig:${GIMP_PREFIX}/share/pkgconfig"

# Used to find the glib-introspection dependencies
export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share:$XDG_DATA_DIRS"

# Used to find the libraries at runtime

# Used by Autotools to find its tools

Note: if you don't include the default value of XDG_DATA_DIRS, you may get a compile error trying to read a PNG icon file. You could try using this in that case:

export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/local/share:/usr/share"

Download the source code

Download with git

This is preferred when working on the source code and developing Gimp.

git clone https://gitlab.gnome.org/GNOME/babl.git
git clone https://gitlab.gnome.org/GNOME/gegl.git
git clone https://gitlab.gnome.org/GNOME/gimp.git

If your distro does not provide them, you should get the Mypaint libs too :

git clone https://github.com/mypaint/mypaint-brushes.git
git clone https://github.com/mypaint/libmypaint.git

Download release archives

Gimp also provides release archives. This is preferred when building stable releases.


Releases for mypaint can be found on their github page.

Build the source code


For both Libmypaint an Mypaint-brushes, use Autotools to install :

cd libmypaint

# Generate the configure script. That may be unnecessary with release archives :
# If you might want to set special options, you can now run `./configure --help` to see what's available.

# Configure the build (you can call ./configure --help):
./configure --prefix=${GIMP_PREFIX}

# Build the code :
make -j$(nproc) install

cd ..


Babl and Gegl use Meson. The build needs to be out-of-source, but the process is simple.

You can read the file meson_options.txt to find a list of options.

You may enable Link-time optimization (meson option b_lto)to have better performance.

cd babl
meson _build \
    --prefix=${GIMP_PREFIX} \
    --buildtype=release \

cd _build
ninja install

Then repeat for gegl.


Finally, you're ready to build Gimp!

You can choose between Autotools and Meson.

Meson is much faster than Autotools, but newer so considered "beta" quality.

Autotools build

The steps are similar to that for libmypaint, except that ./autogen.sh runs ./configure for you.

cd into the directory where you unpacked gegl.

If you're building source you checked out from git, run:

./autogen.sh --prefix=INSTALL_PREFIX

This generates a configure script and then runs it.

If you're building from a tarball, use configure instead of autogen:

./configure --prefix=INSTALL_PREFIX

You can run ```./configure --help``` if you want to see special options you can configure.

Check the output to make sure you aren't missing any features you might want. Then:

make && make install

Meson build

Numerous options are available to configure the build.

You should read the file meson_options.txt to know the options specific to this project. Meson also provides some useful options, such as :

  • warning_level=[1, 2, 3] : The level of compiler warnings
  • b_lto=true|false : Enable link-time optimizations
  • b_coverage=true|false : Enable coverage tools.
  • b_pgo=off|generate|use : Enable profile guided optimizations
  • b_sanitize=none|address|thread|undefined|memory|address,undefined : Use a code sanitizer

cd gimp
meson _build \
    --prefix=${GIMP_PREFIX} \
    --buildtype=release \
    -Djavascript=always \
    -Dlua=always \

cd _build
ninja install


Most problems will occur during the configure stage, and with any luck it's just a missing package and the error message will make it clear what package you need. But there are more subtle problems that can occur. If you have a difficult error, look in:


Running Your New GIMP

You will probably need to set some environment variables in order to run the gimp you just built. In addition to the variables you used for the build, you may need


See the OS-specific pages for more specific advice: