Win10安装gotk3记录

本文详细介绍了在Windows 10环境下使用Go语言进行GTK3 GUI应用开发的环境搭建过程,包括安装MinGW、MSYS2、GTK3及其依赖项,以及配置环境变量和Go get gotk3的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:win10 Home;  go1.11.2 windows/amd64

步骤(https://github.com/gotk3/gotk3/wiki/Installing-on-Windows):

1. Git 略

2. MinGW

这个有些‘坑’,按作者提的sourceforge上的mingwbuilds和mingw-w64都试了都不行。最后参考这里:
https://github.com/msys2/msys2/wiki/MSYS2-installation
下载(64,968,792 字节):
http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20190524.tar.xz
解压到“C:\msys64” - 下面带的mingw32、mingw64都是空目录,等待后面用pacman下载包。

2.1
按msys2页面所说,运行“C:\msys64\msys2_shell.cmd” 来初始化msys2(我没仔细看,直接点了“msys2.exe”,好像也没问题)。
初始化后重启msys2 shell。

3. gotk3页面,Install GTK and its dependencies

3.1 pacman --noconfirm --needed -Sy bash pacman pacman-mirrors
pacman是从Arch Linux借用,msys2用它来管理下载包(类似CentOS yum)。这一步更新pacman自己。
由于连国外源慢,搜索文章修改C:\msys64\etc\pacman.d下的三个文件添加国内的源。
例如mirrorlist.msys:
    Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch
    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
但后来发现这2个源要么404要么慢,注掉了ustc这个。后来开启/关闭科学上网后好像速度又逐渐可以了。

3.2 pacman --noconfirm -Su

3.3 pacman --noconfirm -S mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-pkg-config mingw-w64-x86_64-gtk3
用pacman来安装gcc, pkg-config, gtk3。大概等了几十分钟吧。漏了一点,有时如果中途Ctrl-C中断,下次再运行pacman会提示不能运行,此时删除pacman的一个锁文件即可(/var/lib/pacman下)。

3.4
bash -c "sed -i -e 's/-Wl,-luuid/-luuid/g' C:/msys64/mingw64/lib/pkgconfig/gdk-3.0.pc"

4. 环境变量

GOPATH略。

C:\msys64\mingw64\bin(这个大概是用来找pkg-config.exe)
C:\msys64

5. Go get gotk3

我是直接从cmd窗口运行而不是git bash(cmd里“git”命令可用)。

    go get github.com/gotk3/gotk3/gtk

需要10分钟吧,可能也在编译gtk3。如果没有问题,至此win10下go语言的gtk3应用开发环境搭建完成。

6. 试验例子

    go get github.com/gotk3/gotk3-examples

下载后cd gtk-examples的各个子目录,go run xx 运行,go build xx 编译。

7. 直观感觉

与github.com/andlabs/ui这个来比较:
  - exe体积:ui应用<15M,gotk3应用>22M
  - 启动时间:ui应用双击后比较快就能出来,而gotk3的要等待2秒
  - 编译速度:目测都需要6、7秒多,ui稍微慢一点点

感觉gotk3的还是重了些,不适合做需要快速启动的GUI程序。

gotk3 提供 Go 绑定 GTK 3 和依赖的其他项目。每个组件都给出了用来导入包路径的子目录。以下是部分已经实施的支持库:GTK 3 (3.6 and later)GDK 3 (3.6 and later)GLib 2 (2.36 and later)Cairo (1.10 and later)已经采取谨慎的内存管理与Go的垃圾收集器无缝工作,而无需使用或理解图形对象的浮动参考。简单示例:package main import (     "github.com/conformal/gotk3/gtk"     "log" ) func main() {     // Initialize GTK without parsing any command line arguments.     gtk.Init(nil)     // Create a new toplevel window, set its title, and connect it to the     // "destroy" signal to exit the GTK main loop when it is destroyed.     win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)     if err != nil {         log.Fatal("Unable to create window:", err)     }     win.SetTitle("Simple Example")     win.Connect("destroy", func() {         gtk.MainQuit()     })     // Create a new label widget to show in the window.     l, err := gtk.LabelNew("Hello, gotk3!")     if err != nil {         log.Fatal("Unable to create label:", err)     }     // Add the label to the window.     win.Add(l)     // Set the default window size.     win.SetDefaultSize(800, 600)     // Recursively show all widgets contained in this window.     win.ShowAll()     // Begin executing the GTK main loop.  This blocks until     // gtk.MainQuit() is run.      gtk.Main() } 标签:gotk3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值