Ubuntu下GTK+的下载、安装

Ubuntu下GTK+的下载与安装

准备材料:

  1. Ubuntu 20.04 LTS(任意Debian系发行版即可)
  2. GCC

步骤:

  • 安装
    使用
sudo apt install libgtk-3-dev

进行安装。

使用

pkg-config --list-all | grep gtk

检测是否已经安装

得到如下结果:

gtk+-broadway-3.0              GTK+ - GTK+ Graphical UI Library
gtk+-x11-3.0                   GTK+ - GTK+ Graphical UI Library
gtk+-3.0                       GTK+ - GTK+ Graphical UI Library
gtk+-unix-print-3.0            GTK+ - GTK+ Unix print support
gtk+-wayland-3.0               GTK+ - GTK+ Graphical UI Library

运行如下程序,进行尝试

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    
    
	GtkWidget *window;
	gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_show(window);
	g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
	gtk_main();
	return 0;
}

使用如下命令进行编译:

gcc -o test test.c

报错:

test.c:1:14: fatal error: gtk/gtk.h: No such file or directory
    1 |     #include <gtk/gtk.h>
      |              ^~~~~~~~~~~
compilation terminated.

缺少gtk的库
但是我们已经安装了gtk
推测是没有进行链接

使用如下命令查找gtk库的位置:

pkg-config --cflags --libs gtk+-3.0

得到以下一大串信息

-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0

编译的时候加上这句话:

gcc -o test test.c -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0

成功编译

可以运行

为了方便使用,写如下的makefile:

test: test.o
	gcc -o test test.o \
	-pthread \
	-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 \
	-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0

test.o: test.c
	gcc -c test.c \
	-I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 \
	-I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 \
	-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 \
	-I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 \
	-I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 \
	-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid \
	-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 \
	-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 \
	-I/usr/lib/x86_64-linux-gnu/glib-2.0/include

clean:
	rm test test.o

执行命令:

$ make

gcc -c test.c \
-I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 \
-I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 \
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 \
-I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 \
-I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 \
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid \
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 \
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 \
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include
gcc -o test test.o \
-pthread \
-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 \
-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0

成功运行

猜你喜欢

转载自blog.csdn.net/weixin_45206746/article/details/112000713