🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# GTK+ 简介 > 原文: [http://zetcode.com/gui/gtk2/introduction/](http://zetcode.com/gui/gtk2/introduction/) 这是 GTK+ 编程入门教程。 本教程使用 C 编程语言编写。 它已在 Linux 上创建并经过测试。 GTK+ 编程教程适合新手和中级程序员。 本教程介绍了 GTK+ 2。 ## GTK+ GTK+ 是用于创建图形用户界面的库。 该库是用 C 编程语言创建的。 GTK+ 库也称为 GIMP 工具箱。 最初,该库是在开发 GIMP 图像处理器时创建的。 从那时起,GTK+ 成为 Linux 和 BSD Unix 下最受欢迎的工具包之一。 如今,开源世界中的大多数 GUI 软件都是在 Qt 或 GTK+ 中创建的。 GTK+ 是一个面向对象的应用编程接口。 面向对象的系统是使用 Glib 对象系统创建的,该系统是 GTK+ 库的基础。`GObject`还可以为各种其他编程语言创建语言绑定。 存在用于 C++ ,Python,Perl,Java,C# 和其他编程语言的语言绑定。 GTK+ 本身取决于以下库: * Glib * Pango * ATK * GDK * GdkPixbuf * Cario Glib 是通用工具库。 它提供各种数据类型,字符串工具,启用错误报告,消息日志记录,使用线程以及其他有用的编程功能。Pango 是一个实现国际化的库。ATK 是可访问性工具包; 它提供了一些工具,可以帮助残障人士使用计算机。GDK 是基础图形系统提供的低级绘图和窗口功能的包装。 在 Linux 上,GDK 位于 X Server 和 GTK+ 库之间。 它处理基本的渲染,例如图形基元,光栅图形,光标,字体以及窗口事件和拖放功能。GdkPixbuf 库是用于图像加载和像素缓冲区操作的工具包。Cario 是用于创建 2D 向量图形的库。 自 2.8 版起,它已包含在 GTK+ 中。 Gnome 和 XFce 桌面环境已使用 GTK+ 库创建。 SWT 和 wxWidgets 是使用 GTK+ 的众所周知的编程框架。 使用 GTK+ 的著名软件应用包括 Firefox 或 Inkscape。 ## 编译 GTK+ 应用 要编译 GTK+ 应用,我们有一个方便的工具`pkg-config`。 `pgk-config`返回有关已安装库的元数据。 如果我们要使用特定的库,它将为我们提供必要的依赖库,并包含我们需要的文件。 `pkg-config`程序从特殊的元数据文件中检索有关包的信息。 ```c $ gcc -o simple simple.c `pkg-config --libs --cflags gtk+-2.0` ``` 该行编译一个基本程序。 源代码由一个文件`simple.c`组成。 ```c $ pkg-config --cflags gtk+-2.0 | xargs -n3 -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz ``` `--cflags`参数显示编译 GTK+ 程序所需的预处理器和编译标志,包括所有依赖项的标志。 ```c $ pkg-config --libs gtk+-2.0 | xargs -n5 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype ``` `--libs`参数列出了必要的库。 ## 版本 以下程序将打印 GTK+ 和 Glib 库的版本。 `version.c` ```c #include <gtk/gtk.h> int main(int argc, char *argv[]) { gtk_init(&argc, &argv); g_printf("GTK+ version: %d.%d.%d\n", gtk_major_version, gtk_minor_version, gtk_micro_version); g_printf("Glib version: %d.%d.%d\n", glib_major_version, glib_minor_version, glib_micro_version); return 0; } ``` 该程序使用内置常量。 ```c $ ./version GTK+ version: 2.24.23 Glib version: 2.40.2 ``` 这是`version`程序的输出。 ## 数据来源 * [gtk.org](http://www.gtk.org) * [gtkforums.com](http://www.gtkforums.com) * [GTK+ 2 参考](https://developer.gnome.org/gtk2/2.24/) 这是 GTK+ 库的简介。