依照官方文档在MSYS2中安装GTK

最近手痒痒,想干点事儿,于是就有了这篇文章,为后面用Rust语言写GTK程序做准备

在MSYS2中安装GTK,那就说明使用的是Window系统

我们进入Windows下配置GTK的官方网址

这里将MSYS2安装过程截图一下


官方教程

现在我们关注Step1 Step2 以及 Step5Step3 Step4 现阶段用不上,等要用的时候,我相信那时的我已经能顺利搞定遇到的问题了

安装MSYS2

依照Step1的提示,,我们安装MSYS2

中国科学技术大学开源软件镜像站中找到msys2

ustc中的msys2

点击进入到distrib目录下,由于我这Windows 64位的系统,故下载了msys2-x86_64-latest.exe

msys2-x86_64-latest.exe下载

接下来就是安装,和普通软件的安装一样,双击msys2-x86_64-latest.exe即可

我这里是更改了安装目录,使其装在了D盘

msys2安装界面

安装完毕后,打开msys2的命令窗口,我们便可以进行下一步:安装gtk3

安装gtk3

依照Step2的提示,我们执行pacman -S mingw-w64-x86_64-gtk3

msys2中安装mingw-w64-x86_64-gtk3
image.png

直接回车安装

msys2中安装mingw-w64-x86_64-gtk3

没错,慢的一塌糊涂,这就需要使用国内的镜像站来加速了

我们再次在中国科学技术大学开源软件镜像站中找到msys2的Help,

MSYS2 Help

点击进入 MSYS2 源使用帮助

MSYS2 源使用帮助

意思就是让我在下面的三个配置文件中

image.png

都使用ustc的源,以mirrorlist.mingw64为例,用记事本打开mirrorlist.mingw64查看一下内容

##
## 64-bit Mingw-w64 repository mirrorlist
##

## Primary
## msys2.org
Server = http://repo.msys2.org/mingw/x86_64/
Server = https://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/
Server = https://www2.futureware.at/~nickoe/msys2-mirror/mingw/x86_64/
Server = https://mirror.yandex.ru/mirrors/msys2/mingw/x86_64/
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://mirror.bit.edu.cn/msys2/mingw/x86_64/
Server = https://mirror.selfnet.de/msys2/mingw/x86_64/

发现给我列出了好几个Server,其中就包含了ustc的源,我们将ustc的源(Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/)移动到最前面

剩下两个配置文件做相同的操作

然后执行 pacman -Sy

接着我们来执行之前的命令pacman -S mingw-w64-x86_64-gtk3

起飞

没错,一下就起飞了,遇到下面的结果,就说明安装完成了

mingw-w64-x86_64-gtk3安装完成

依照Step5的提示,我们执行pacman -S mingw-w64-x86_64-toolchain base-devel命令

mingw-w64-x86_64-toolchain base-devel安装

后续的所有步骤都直接回车(即默认全部选定)

如果安装过程中出现如下的错误

发生错误

建议再次执行pacman -S mingw-w64-x86_64-toolchain base-devel命令

再次执行

如果错误依旧,那么请先执行pacman -Sy命令后再执行pacman -S mingw-w64-x86_64-toolchain base-devel命令

pacman -Sy命令

可以看到下载大小有了变化,我们回车默认安装

一般会成功,如果还不成功,则重复上面的动作,如果这都还不成功,I have no idea,自己再搜搜解决办法,下图展示了安装成功的情况

安装成功

编译GTK程序

我们进入Hellow World页面

点击进入Hellow World页面

依照提示,在当前目录创建hello-world-gtk.c文件

#include <gtk/gtk.h>

static void
print_hello (GtkWidget *widget,
             gpointer   data)
{
  g_print ("Hello World\n");
}

static void
activate (GtkApplication *app,
          gpointer        user_data)
{
  GtkWidget *window;
  GtkWidget *button;
  GtkWidget *button_box;

  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

  button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
  gtk_container_add (GTK_CONTAINER (window), button_box);

  button = gtk_button_new_with_label ("Hello World");
  g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_close), window);
  gtk_container_add (GTK_CONTAINER (button_box), button);

  gtk_widget_show_all (window);
}

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

然后执行命令

gcc `pkg-config --cflags gtk+-3.0` -o hello-world-gtk hello-world-gtk.c `pkg-config --libs gtk+-3.0`

编译hello-world-gtk.c

这里提示bash: gcc: 未找到命令,但是我们之前在选择的时候是默认全部安装,并且里面有gcc的安装

gcc安装证据

我们查找一下gcc的路径


gcc安装路径查找

即gcc安装在了 /mingw64/bin/ 目录下

再查看一下PATH环境变量的值

查看PATH环境变量的值

竟然!!!gcc的路径并没有在PATH环境变量中,那我们手动添加一下

执行

export PATH="/mingw64/bin:$PATH"

命令后再执行命令

gcc `pkg-config --cflags gtk+-3.0` -o hello-world-gtk hello-world-gtk.c `pkg-config --libs gtk+-3.0`

就会正常产出可执行文件hello-world-gtk.exe

产出可执行文件`hello-world-gtk.exe

当然,此时双击运行是不会成功的

运行失败

我们知道,官方的gtk3-demo.exe是能运行成功的,我们先找到它

查找gtk3-demo.exe

我们可以将hello-world-gtk.exe拷贝到与gtk3-demo.exe相同的目录(/mingw64/bin)下后双击运行便成功了

hello-world-gtk.exe运行陈工

当然,更为便捷的是将gtk3-demo.exe所在的目录添加到系统的PATH环境变量中,这样就不用每次都拷贝到/mingw64/bin目录下去运行

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容