GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK+也有Windows版本和Mac OS X版。它支持创建基于 GUI 的应用程序,可以把 GTK+ 想像成一个工具包,从这个工具包中可以找到用来创建 GUI 的许多已经准备好的构造块。
GTK+官方指南:http://zetcode.com/tutorials/gtktutorial/
GTK+的Wiki网址:http://en.wikipedia.org/wiki/GTK%2B
参考:https://www.jianshu.com/p/60c029928e11
参考:https://openhome.cc/Gossip/GTKGossip/GTKUnderUbuntu.html
先开一个 Ubuntu 20.04 LTS x64 的裸机
在命令行安装 build-essential 套件
sudo apt-get install build-essential
提示:
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
运行:
sudo dpkg --configure -a
然后执行安装命令成功。
测试 gcc
touch hello.c vim hello.c
在 vim 编辑界面,粘贴:
#include <stdio.h> int main(void) { printf("Hello World!\n"); return 0; }
编译:
gcc -o hello hello.c
运行:
./hello
输出:
Hello World!
安装 GTK 开发套件 libgtk2.0-dev
sudo apt-get install libgtk2.0-dev
查看一下GTK的相关编译环境信息:
–cflags 关联 include 目录。
pkg-config --cflags gtk+-2.0
输出:
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16
–libs 关联函数库及所在目录。
pkg-config --libs gtk+-2.0
输出:
-lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype
所关联的函数函式庫包括:
GTK(-lgtk):基于 GDK 的 widget 函数库。
GDK(-lgdk):Xlib 包(Wrapper)。.
gdk-pixbuf(-lgdk_pixbuf):影像处理函数库。
Pango(-lpango):国际化文字。
gobject(-lgobject):GTK 用以為基礎的型態系統。
gmodule(-lgmodule):用來載入執行時期的擴充。
GLib(-lglib):包括各種函式,GTK 基於 GLib,所以您會需要這個函式庫。
Xlib(-lX11):被 GDK 所使用。
Xext(-lXext):包括共享記憶體 pixmaps(shared memory pixmaps)與其它 X 擴充。
math(-lm):因各種目的而被 GTK 所使用的數學函式庫。
GTK 基于 GDK(Gnome Drawing Kit),GDK 是一个绘图开放工具箱,GDK 將 Xlib(X函数库)加以包裝简化,比如点、线、窗口、色彩等的设定,以及键盘、鼠标等事件的支持。