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

2020-11-21  本文已影响0人  祥龙翔天

最近手痒痒,想干点事儿,于是就有了这篇文章,为后面用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目录下去运行

上一篇下一篇

猜你喜欢

热点阅读