看场电影

Ubuntu下如何安装GTK+3

2018-06-12  本文已影响0人  zenny_chen

如果我们要在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的话,就把上述命令中的“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结尾。
最后列出GTK+3的一些参考链接:
GTK+官方指南:http://zetcode.com/tutorials/gtktutorial/
GTK+的Wiki网址:http://en.wikipedia.org/wiki/GTK%2B

下面举一个简单的例子。我们先创建一个名为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即可。

上一篇 下一篇

猜你喜欢

热点阅读