在Ubuntu下安装GTK+3或者安装最新的GTK+4方法是一样的,下面就具体讲解。如果是安装GTK+4,则把下面涉及的命令中的“3”改为“4”即可。
如果我们要在Ubuntu系统下使用基于GTK+3开发的App,那么我们无需安装任何东西,直接双击该App即可使用。如果我们要安装GTK+3.0进行开发,可使用以下命令: sudo apt-get install libgtk-3-dev
下载安装完毕之后,我们可以使用以下命令来校验安装是否成功,并且查看GTK+3.0所包含的所有头文件以及库的路径: pkg-config --cflags --libs gtk+-3.0
如果安装时出现问题的话,我们也可以直接安装GTK+3.0的库以及其依赖项: sudo apt-get install libgtk3*
现在Gnome开发者网站上最新的版本是GTK+4,安装GTK+4的方法和安装GTK+3是一样的,把命令中的3改成4即可。 下面列出在x86_64环境下使用GTK+3所需要引入的头文件路径以及库路径。
1、所需的头文件路径: /usr/include/glib-2.0/ /usr/include/atk-1.0/ /usr/include/gdk-pixbuf-2.0/ /usr/include/cairo/ /usr/include/pango-1.0/ /usr/lib/x86_64-linux-gnu/glib-2.0/include/ /usr/include/gtk-3.0/
2、所需的库路径: /usr/lib/x86_64-linux-gnu/
3、所需要依赖的库: gtk-3 gobject-2.0 pangocairo-1.0 gio-2.0 atk-1.0 gdk-3 glib-2.0
注意,Linux下的库文件名是前缀lib然后再跟库名,再是.a或.so结尾。
下面举一个简单的例子。 我们先创建一个名为main.c的C源文件,如下所示: #include <stdio.h> #include <stdint.h> #include <stdbool.h> #include <stdnoreturn.h> #include <stdatomic.h> #include <assert.h> #include <gtk/gtk.h> #include <glib/gprintf.h> #ifndef var #define var __auto_type #endif static void PrintMsg(GtkWidget *widget, gpointer window) { if(window != NULL) g_printf("Button clicked\n"); var dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, u8"按钮已被按下!"); //gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(window)); //gtk_window_set_modal(GTK_WINDOW(dialog), true); gtk_window_set_title(GTK_WINDOW(dialog), u8"请注意"); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } int main(int argc, char *argv[]) { gtk_init(&argc, &argv); var window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "GTK Test"); gtk_window_set_default_size(GTK_WINDOW(window), 640, 480); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window), 15); var button = gtk_button_new_with_label("Button"); gtk_widget_set_halign(button, GTK_ALIGN_START); gtk_widget_set_valign(button, GTK_ALIGN_START); gtk_widget_set_tooltip_text(button, "This is a button widget"); g_signal_connect(button, "clicked", G_CALLBACK(PrintMsg), window); gtk_container_add(GTK_CONTAINER(window), button); gtk_widget_show_all(window); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); static_assert(sizeof(int) == 4, "Not compatible architecture!"); puts("Will enter GTK runloop..."); gtk_main(); puts("Program terminated!"); return 0; }
为了方便编译构建,我们建立一个名为build.sh的shell脚本文件,将它放在与main.c同一个目录下。其内容如下所示: clang main.c -std=gnu11 -fblocks -lBlocksRuntime -I/usr/include/glib-2.0/ -I/usr/include/atk-1.0/ -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/cairo/ -I/usr/include/pango-1.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/gtk-3.0/ -L/usr/lib/x86_64-linux-gnu/ -lgtk-3 -lgobject-2.0 -lpangocairo-1.0 -lgio-2.0 -latk-1.0 -lgdk-3 -lglib-2.0 -o gtk-test
完成之后,我们直接打开命令行终端,进入到该shell脚本文件所在的路径,然后直接输入bash build.sh即可。如果各位没有安装Clang编译器,则可以将上述的clang改为gcc,然后把-fblocks -lBlocksRuntime这两个命令参数去掉。
我们成功生成可执行文件后就可以直接运行它了,还是在当前路径下,输入./gtk-test即可。
相关主题 |