Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL GTK+ FORUM GTK+ FAQ GTK+ TUTORIELS GTK+ SOURCES GTK+ BIBLIOTHEQUES LIVRES GTK+ OUTILS GTK+ BLOG

Installation de GTK+ à partir des sources

Date de publication : 14 Août 2006

Par Nicolas Joseph (home) (Blog)
 

Ce tutorial va vous présenter la marche à suivre pour installer GTK+ à partir des sources sous Linux

I. Introduction
II. Fichiers nécessaires
II. Préparation de l'installation
III. Compilation
IV. Test
V. Bug
VI. Remerciements


I. Introduction

La dernière version stable de GTK+ vient de sortir (voir les nouveautés) et si vous êtes impatient ou que votre distribution ne propose pas de système de paquets, vous êtes obligés de passer par les sources. Cette étape n'est très compliquée mais pour éviter de s'y reprendre en plusieurs fois, je vais vous guider.
Si vous êtes arrivés sur ce tutorial, il est fort probable que vous connaissiez déjà GTK+, si ce n'est pas le cas, vous pouvais commencer par lire GTK+ par l'exemple pour apprendre à utiliser GTK+.


II. Fichiers nécessaires

Pour commencer, il faut télécharger les archives des sources de GTK+ ainsi que leurs dépendances, pour GTK+ 2.10, il vous faut (nous supposerons que les fichiers sont stockés dans le dossier ~/gtk+-2.10/) :

Il se peut que vous ayez besoin d'autres packages s'il s'agit de sa première installation.


II. Préparation de l'installation

Pour faire les choses proprement, nous allons tout intaller dans le répertoire /opt/gtk, commencons par le créer :
$ su
Password:
# mkdir -p /opt/gtk
# ls -l / /opt
/:
drwxr-xr-x   12 root root   4096 2006-07-04 18:24 opt

/opt/:
drwxr-xr-x   8 root root     4096 2006-07-04 18:29 gtk
Vérifiez que vous avez les droits nécessaires sur les dossiers créés.
Ensuite il faut extraire les archives :
$ cd ~/gtk+-2.10
$ tar -zxf atk-1.10.3.tar.gz
$ tar -zxf cairo-1.2.0.tar.gz
$ tar -zxf glib-2.12.0.tar.gz
$ tar -zxf gtk+-2.10.0.tar.gz
$ tar -zxf pango-1.13.2.tar.gz
Avant de nous lancer dans la compilation, nous allons définir deux variables d'environnement :
$ export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig/:$PKG_CONFIG_PATH
Cette variable permet à l'utilitaire pkg-config de trouver les fichiers .pc qui lui permet de récuperer les informations sur les bibliothèques telles que les options de compilation pour gcc. Si vous avez une ancienne version de GTK d'installée, pensez à renommer les anciens fichiers .pc (généralement situés dans le répertoire /usr/lib/pkgconfig) en .pc.old (ou les déplacer) afin que pkg-config ne les utilise pas.
$ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH
Cette variable permet à l'éditeur de lien ld de trouver nos bibliothèques nouvellement installées.
Voilà, nous sommes prêt pour lancer la compilation !

info Avant de compiler, vous pouvez appliquer un petit correctif, voir la partie Bug.

III. Compilation

C'est ici que les choses peuvent se compliquer puisqu'il faut installer les paquets en respectant les dépendances.
Nous allons commencer par la glib puisqu'elle ne nécessite aucune dépendance :

$ cd glib-2.12.0
$ ./configure --prefix=/opt/gtk
[...]
$ make
[...]
$ su
Password:
# make install
[...]
Voila rien de bien compliqué ! le parametre prefix de la commande configure permet de choisir le répertoire d'installation.
Et maintenant il faut vous armer de patience (surtout pour les petites configurations) et recommencer cette série de commandes pour les autres paquets en respectant l'ordre suivant :

  1. cairo
  2. atk
  3. pango
  4. gtk+
Normalement si tout c'est bien passé, votre système est prêt, reste plus qu'à tester !


IV. Test

Afin de vérifier que cette nouvelle version de GTK+ est bien installée, voici un petit programme de test ;
main.c
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>

int main (void)
{
  printf ("Version de GTK+ utilisee :\n");
  printf ("\tBibliotheque : %d.%d.%d\n", gtk_major_version, gtk_minor_version, gtk_micro_version);
  printf ("\tFichiers d'en tete : %d.%d.%d\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
  return EXIT_SUCCESS;
}
Pour compiler tapez :
$ gcc `pkg-config --cflags --libs gtk+-2.0` main.c
Et si tout c'est bien passé, vous devriez obtenir :
$ ./a.out
Version de GTK+ utilisee :
        Bibliotheque : 2.10.0
        Fichiers d'en tete : 2.10.0

V. Bug

Dans les versions précédentes les programmes écrits à l'aide de GTK+ pouvaient être compilés en mode ansi strict (option -ansi et -pedantic de gcc) mais avec cette dernière version, le fichier d'en tête gtktextbuffer.h n'est pas conforme :
$ gcc -Wall -O2 -ansi -pedantic -W `pkg-config --cflags --libs gtk+-2.0` main2.c
In file included from /opt/gtk/include/gtk-2.0/gtk/gtk.h:170,
                 from main.c:1:
/opt/gtk/include/gtk-2.0/gtk/gtktextbuffer.h:52: warning: ISO C restricts enumerator values to range of 'int'
/opt/gtk/include/gtk-2.0/gtk/gtktextbuffer.h:53: warning: ISO C restricts enumerator values to range of 'int'
/opt/gtk/include/gtk-2.0/gtk/gtktextbuffer.h:55: warning: ISO C restricts enumerator values to range of 'int'
Les messages étant un warning, en l'absence de l'option -Werror votre programme devrait tout de même compiler.
Si toute fois vous souhaitez corriger ce problème, vous pouvez appliquer ce patch :
$ patch ~/gtk+-2.10/gtk+-2.10.0/gtk/gtktextbuffer.h patch
patching file~/gtk+-2.10/gtk+-2.10.0/gtk/gtktextbuffer.h
Voilà, il ne vous reste plus qu'à relancer la compilation de GTK+.

warning Les programmes liés dynamiquement avec GTK+ patché ne seront pas compatible avec la version non patchée, mais cela n'a pas d'importance si vous distribuez les sources ou si GTK+ est lié statiquement à votre programme.

VI. Remerciements

Merci à Miles pour la relecture attentive de cet article.



Valid XHTML 1.1!Valid CSS!

Copyright © 2006-2007 Nicolas Joseph. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsable bénévole de la rubrique GTK+ : gege2061 - Contacter par EMail :
Vos questions techniques : forum d'entraide GTK+ - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.