yzc164 发表于 2018-5-5 10:29:57

ubuntu 10.04下的gtk+环境的搭建

  自己一直对linux很感兴趣,一直关注这ubuntu发展。从一开始使用的redhat9.0。又使用ubuntu8.04到ubuntu10.04一 路走过来,每次都是看到了欣喜。
  这里是转了别人的东西,自己只是把它整理一下,分享给大家。分享快乐。呵呵。
  注意:复制makefile时。注意命令前是TAB键。
  引用原文地址 http://blog.csdn.net/dai_weitao/archive/2007/08/22/1755111.aspx
  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
sudoapt-get install build-essential       #这将安装gcc/g++/gdb/make 等基本编程工具
sudoapt-get install gnome-core-devel#这将安装 libgtk2.0-dev libglib2.0-dev等开发相关的库文件
sudo apt-get install pkg-config             #用于在编译GTK程序时自动找出头文件及库文件位置
sudo apt-get installdevhelp               #这将安装 devhelp GTK文档查看程序
sudo apt-get installlibglib2.0-doc libgtk2.0-doc#这将安装 gtk/glib 的API参考手册及其它帮助文档
sudoapt-get instal 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[])
{
    /* A window and a button */
    GtkWidget * win, * btn;

    /* Initialize GTK */
    gtk_init( & argc, & argv);

    /* New a window and a button */
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    btn = gtk_button_new_with_label( &quot; Close yourself &quot; );
   
    /* Add button to window container */
    gtk_container_add(GTK_CONTAINER(win), btn);

    /* Connect &quot;close&quot; and button to quit op */
    g_signal_connect(win, &quot; destroy &quot; , G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(btn, &quot; clicked &quot; , G_CALLBACK(gtk_main_quit), NULL);

    /* Show all in the window */
    gtk_widget_show_all(win);

    /* Main loop, wait for signals */
    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可执行文件.
页: [1]
查看完整版本: ubuntu 10.04下的gtk+环境的搭建