ubuntu 下Gtk 开发环境建立

时间:2022-11-15 06:59:42
 1.Gtk 简介
    GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以可以用它来开发开源软件、*软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。当前,GTK已经被成功地应用到了大量的*软件及商业软件中,已经取得了很大的成功。
    当前,GTK主要由几大组件构成:
*Gtk+:GTK的主要构件,包括所有的图形控件及大量实用的API。
*Glib:包含一些标准函数的替代函数,以及一些处理链表等数据结构的函数等。这些替代函数被用来增强GTK 的可移植性,同时提供 libc 的对应函数的增强版本。
*Pango:该组件用来处理国际化文字输出。
   GTK是一个跨平台的GUI开发库, 它是用C语言以OO的方式(俗称面向对象C, 又称OO-C)开发的. 只要是有一定C语言和GUI开发基础, 用GTK是一件很简单的事.
2.安装与配置
   笔者的操作系统为ubuntu 8.04
sudo apt-get install build-essential       #这将安装gcc/g++/gdb/make 等基本编程工具
sudo apt-get install gnome-core-devel  #这将安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件
sudo apt-get install pkg-config            #用于在编译GTK程序时自动找出头文件及库文件位置
sudo apt-get install devhelp                 #这将安装 devhelp GTK文档查看程序
sudo apt-get install libglib2.0-doc libgtk2.0-doc  #这将安装 gtk/glib 的API参考手册及其它帮助文档
sudo apt-get install glade libglade2-dev #这将安装基于GTK的界面构造程序
运行如下命令检查安装:
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
3.实例

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    
    GtkWidget *win, *btn; 
    gtk_init(&argc, &argv);
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    btn = gtk_button_new_with_label("Close yourself");
    
    gtk_container_add(GTK_CONTAINER(win), btn);
    
    g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(btn, "clicked", G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show_all(win);
    gtk_main();
    return 0;
}上面的程序为main.c, 它所完成的功能就是创建一个窗口(window), 在窗口中添加一个按钮(button), 点击这个button或者是窗口的关闭按钮, 就会实现窗口的关闭, 并使程序结束.
这几行代码很简单, 主要有几个关键:

GtkWidget: 创建一个窗口和一个按钮. GTK中的控件都要用GtkWidget类型创建. 
gtk_init(): 对程序用命令行参数进行初始化. 
gtk_xxx_new(): 新建xxx类型的控件 
gtk_container_add(): 把控件添加到container容器中, 在这里是把按钮添加到窗口中. 
g_signal_connect(): 把GTK控件对应的操作信号, 连接到CALLBACK函数上. 
gtk_widget_show_all(): 显示窗口. 
gtk_main(): 开始main loop, 等待信号触发事件. 
4. 编译
我用一个makefile来展示编译命令. # Target, compiler and objects.
EXEC   = test
CC     = gcc
OBJ    = main.o
# Use for compile.
CFLAGS = `pkg-config --cflags gtk+-2.0`
# Use for link.
CLIBS  = `pkg-config --libs gtk+-2.0`
$(EXEC): $(OBJ)
    $(CC) -o $@ $^ $(CLIBS)
main.o: main.c
    $(CC) -c $< $(CFLAGS)

clean:
    rm $(EXEC) *.o这里于普通的makefile不同的地方是CFLAGS和CLIBS两个变量, 分别用于编译和链接.
用`......`引用pkg-config实现参数的flags.

在编译时只需要在终端下执行make命令, 就会在目录下生成test可执行文件. 

http://blog.sina.com.cn/s/blog_437e890e0100w1m8.html