Ubuntu下如何安装GTK+3

如果我们要在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/
  1. 所需的库路径:
  • /usr/lib/x86_64-linux-gnu/
  1. 所需要依赖的库:
  • 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即可。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值