04 December 2007

gtk+ 2.0 のコンパイル

gtk+を使うソースコードをコンパイルしようと思ったら、案の定エラー。
普段、LinuxでGUIのプログラミングはしないからね…

gtk+のインストール
(自動的に、必要なパッケージも一式インストールされる)


[root@localhost ~]# yum install gtk2-devel

ライブラリがインストールされているかチェックして、ライブラリ依存のコンパイラ スイッチを一応確認


[root@localhost ~]# pkg-config --list-all|grep -e gtk

gtk+-2.0 GTK+ - GIMP Tool Kit (x11 target)
gtk-doc gtk-doc - API documentation generator
gtk+-x11-2.0 GTK+ - GIMP Tool Kit (x11 target)
gtk+-unix-print-2.0 GTK+ - GIMP Tool Kit Unix print support
gtk-engines-2 gtk-engines-2 - GTK+ Theme Engines

[root@localhost ~]# pkg-config gtk+-2.0 --libs --cflags

-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

コンパイルとリンクは、このコンフィグの出力を使い次のように…


[root@localhost testprog]# gcc ghello.c -o ghello `pkg-config gtk+-2.0 --libs --cflags`

コンパイルのテストに用いた、サンプルプログラム

ghello.c

#include <gtk/gtk.h>

gint main(gint argc, gchar* argv[])
{
GtkWidget* window;
GtkWidget* label;

/* 初期化 */
gtk_set_locale();
gtk_init(&argc, &argv);
gtk_rc_parse("./gtkrc");

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window),"destroy",
GTK_SIGNAL_FUNC(gtk_main_quit),window);

/* ウィジェットとコンテナの隙間を規定 */
gtk_container_border_width(GTK_CONTAINER(window),50);

label = gtk_label_new("Hello World!");

gtk_container_add(GTK_CONTAINER(window),label);
gtk_widget_show(label);
gtk_widget_show(window);

gtk_main();

}