在选写这篇教学文件时正好在学Ubuntu,这边说明一下如何在Ubuntu下设定GTK开发基本环境。
由于GTK基本上主要以C语言来撰写,您必须有C编译器,Ubuntu预设安装好后就有gcc了,不过缺少必要的Header file,您可以在文字模式下,安装build-essential套件,例如:
sudo apt-get install build-essential
安装完成后,可以写个基本的C语言程式:
hello.c
#include
int main(void) {
printf("Hello! World!n");
printf("哈啰!C语言!n");
return 0;
}
编译并执行看看:
$ gcc -o hello hello.c
$./hello
Hello! World!
哈啰!C语言!
再来安装GTK开发套件libgtk2.0-dev:
sudo apt-get install libgtk2.0-dev
安装完成后,可以使用pkg-config查看一下GTK的相关编译环境资讯:
pkg-config --cflags --libs gtk+-2.0
pkg-config会读取GTK附带的.pc档来取得相关编译资讯,--cflags会列出include目录,--libs列出所连结的函式库及其所在目录,以我的电脑为例:
目录,以我的电脑为例:
$ pkg-config --cflags --libs gtk+-2.0
-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 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
可以分开执行比较清楚,例如:可以分开执行比较清楚,例如:
$ pkg-config --cflags gtk+-2.0
-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 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1
$ pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
安装GTK环境只要安装一个libgtk2.0-dev就可以了,而安装gnome开发环境的话,需要装gnome-core-devel,它包含GTK开发包。这里大家只介绍安装GTK2.0的方法。
接下来大家给个小程序试试:
#include
void hello(GtkWidget *widget,gpointer data)
{
g_print("Hello Ubuntu!n");
}
gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
g_print ("delete event occurredn");
return(TRUE);
}
void destroy(GtkWidget *widget,gpointer data)
{
gtk_main_quit();
}
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello Ubuntu!");
gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (gtk_widget_destroy),GTK_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window);
gtk_main();
return(0);
}
然后用接下来命令编译运行
$ gcc gtktest.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
$ ./gtktest
最后得到hello Ubuntu的小窗口。证明安装成功。