Cet article détaille le processus d'installation de GTK+ sur Mac OS X Lion 10.7.4, incluant la résolution d'un problème courant avec l'outil de gestion de paquets Fink.
Environnement Système
- Système d'exploitation : Mac OS X Lion 10.7.4 (11E53)
- Outils de développement : Xcode 4.4.1 (1448) avec les "Command Line Tools" installés.
Tentatives d'installation
1. Méthode officielle GTK+
Les instructions officielles pour macOS suggèrent l'utilisation de jhbuild et gtk-mac-bundler. Après avoir installé ces outils, la suite du processsu n'était pas claire, et aucune documentation d'installation détaillée n'a été trouvée en ligne. Cette approche a été abandonnée.
2. Installation via Homebrew
La recherche en ligne a révélé des recommandations pour installer GTK+ via Homebrew. L'installation de Homebrew s'effectue via la commande suivante dans le Terminal :
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Après l'installation, vérifier avec brew -v.
Une tentative d'installation de GTK+ avec brew install gtk+ a échoué, probablement en raison de problèmes d'accès aux serveurs SourceForge.
3. Installation via Fink
Fink est une autre option suggérée. L'installation se fait en téléchargeant le paquet binaire approprié depuis le site de Fink.
L'installeur initial pour Fink sur Lion n'a pas lancé automatiquement le script de configuration du shell pathsetup.command. En basculant vers la version anglaise du site, la commande correcte a été identifiée comme /sw/bin/pathsetup.sh. Après exécution de ce script et un redémarrage, la commande fink est devenue disponible.
3.1 Résolution de l'erreur "could not determine XFree86 version number"
Lors de l'exécution de commandes Fink comme fink scanpackages ou fink index, l'erreur could not determine XFree86 version number apparaissait, empêchant la mise à jour des listes de paquets. Suivant une solution trouvée en ligne, le fichier /sw/lib/perl5/Fink/VirtPackage.pm a été modifié.
L'instruction problématique :
if (open (XBIN, "$xdir/bin/$binary -version -iokit 2>\\&1 |")) {
A été remplacée par :
if (open (XBIN, "$xdir/bin/$binary -version 2>\\&1 |")) {
Cette modification, effectuée après avoir copié le fichier, modifié ses permissions, édité le contenu, restauré les permissions et déplacé le fichier modifié vers son emplacement d'origine avec sudo, a résolu le problème.
3.2 Installation de GTK+ et dépendences
Après avoir résolu l'erreur XFree86, l'installation de gtk+2 a été tentée. Comme il semblait s'agir d'une version runtime, les paquets de développement suivants ont été installés manuellement :
gtk+2gtk+2-devglib2-devpkgconfig
L'installation des paquets a réussi, permettant de lancer l'application gtk-demo.
3.3 Configuraton de pkg-config
La vérification de la configuration de pkg-config pour GTK+ a d'abord échoué, signalant l'absence du paquet pangoxft.
pkg-config --cflags --libs gtk+-2.0
Package pangoxft was not found in the pkg-config search path.
...
Package 'pangoxft', required by 'GDK', not found
Après avoir installé gdk-pixbuf, le problème persistait. L'installation de pango1-dev a ensuite été effectuée.
Finalement, une nouvelle erreur a indiqué l'absence du paquet atk.
Package atk was not found in the pkg-config search path.
...
Package 'atk', required by 'GTK+', not found
L'installation de atk1 a résolu ce problème. L'exécution de pkg-config --cflags --libs gtk+-2.0 a alors produit la sortie attendue, indiquant que les chemins et bibliothèques étaient correctement configurés.
4. Compilation d'un programme GTK+
Un programme de test simple en C (testgtk.c) a été créé :
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
gtk_window_set_title(GTK_WINDOW(window),"Hello GTK+!");
gtk_widget_show(window);
gtk_main ();
return 0;
}
La compilation avec GCC a d'abord échoué en raison d'un problème d'architecture (les bibliothèques Fink étant compilées pour 32 bits (i386) alors que le système est en 64 bits (x86_64)). L'ajout de l'option -m32 a permis de compiler avec succès le programme pour l'architecture 32 bits.
gcc -m32 testgtk.c -o testgtk `pkg-config --cflags --libs gtk+-2.0`
L'exécution du programme compilé a ensuite fonctionné correctement.