Vous êtes ici

GTK+3 "statique" pour GNU/Linux

Objectif : créer des exécutables GTK+3 indépendants pour GNU/Linux.

Les applications GTK+3 sous GNU/Linux sont normalement conçues pour être exécutées via des bibliothèques système dont le chemin est figé ; c'est d'ailleurs de cette manière que la plupart des programmes fonctionnent sur ce système (alors que, sous Windows et Mac OS X, il est plutôt recommandé de fournir des bibliothèques à chemin relatif avec chaque application).

Il y a cependant certains cas où on a envie de tout avoir dans un seul exécutable : par exemple pour un installeur graphique, logiciel de démonstration, application destinée à de vieilles distributions n'ayant pas GTK+3 (Debian Squeeze et CentOS 6 par exemple) ou plus simplement quand l'utilisateur final n'a pas la possibilité d'installer les bibliothèques lui-même (utilisateurs non-techniciens ou restreints).

GTK+3 a le défaut de ne pas compiler statiquement par défaut. C'est pourquoi il faut effectuer quelques modifications pour obtenir ceci :

Pas de bibliothèques GTK+3 installées...

... mais gtk3-demo (statique) fonctionne !

Pour essayer, téléchargez :

gtk3-demo_static-LINUX.tar.bz2 (5,11 Mo)

Décompressez l'archive où vous le désirez :
tar xfvj gtk3-demo_static.tar.bz2
and lancez le programme :
./gtk3-demo

Cela devrait fonctionner même sans paquets GTK+3 installés sur le système.

GTK+ 3.4.2 "statique" (fichiers de développement) pour GNU/Linux

Pour compiler de tels exécutables vous-même, téléchargez :
gtk342_static-LINUX_(TARNYKO).tar.bz2 (7,20 Mo)

Comment utiliser :

Extrayez l'archive dans "/opt" :

mv gtk342_static-LINUX_\(TARNYKO\).tar.bz2 /opt
cd /opt
tar xfvj gtk342_static-LINUX_\(TARNYKO\).tar.bz2

Adaptez les fichiers à leur nouvel emplacement :

cd gtk342_static
find -name '*.pc' | while read pc; do sed -e "s@^prefix=.*@prefix=$PWD@" -i "$pc"; done

Indiquez à "pkg-config" d'y trouver les bibliothèques :

export PKG_CONFIG_PATH=/opt/gtk342_static/lib/pkgconfig

Testez en vérifiant que cette commande affiche un résultat cohérent :
pkg-config --cflags gtk+-3.0

(si un message du type "Package xi was not found" apparaît, vous aurez besoin de faire "apt-get install libxi-dev" -Debian/Ubuntu- ou "yum install libXi-devel" -Fedora/CentOS)

Nous sommes prêts ! Compilez votre code source grâce à ce type de commande :

gcc monprogramme.c -o monprogramme `pkg-config --cflags gtk+-3.0` -L/opt/gtk342_static/lib -lgtk-3 -lgdk-3 -lgdk_pixbuf-2.0 -latk-1.0 -lpangocairo-1.0 -lpangoft2-1.0 -lpango-1.0 -lcairo-gobject -lcairo -lpixman-1 -lfontconfig -lfreetype -lgobject-2.0 -lgmodule-2.0 -lgio-2.0 -lglib-2.0 -lffi -ljpeg -ltiff -lpng -lxml2 -llzma -lz -liconv -lX11 -lXrender -lXi -lm -lresolv -lrt

(PS : l'ordre des arguments est important, ne le changez pas)

Voilà !