在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

#include

#include

#include

#include

#include

#include

#include

#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即可。

相关主题

Logo

更多推荐