在Windows上静态编译GTK3程序

1,前言

  1. 闲来无事,想在Windows上静态编译GTK3程序。上网搜了搜,发现资料很少。恰好找到了一个远古版本可用,便分享出来贡献下

  2. 获取软件:来源网站 | gtk-3.4.2 | gcc-4.8.5

  3. 第一个GTK程序,将如下内容保存到文本 First_Gtk.c

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <gtk/gtk.h>

int main()
{
gtk_init(NULL, NULL); //初始化gtk环境
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //新建一个顶级窗口,并返回窗口指针
gtk_window_set_title(window, "Hello,GTK"); //设置窗口标题
g_signal_connect(window, "destroy", gtk_main_quit, NULL); //关窗口即退出,否则程序关后在后台运行
gtk_widget_show(window); //显示窗口
gtk_main(); //启动消息循环

return 0;
}

2,配置环境

  1. 下载上面的 gcc-4.8.5 和 gtk-3.4.2 并解压
  2. 如果GCC编译器的解压位置在:C:\Soft\mingw32-4.8.5-gtk342_static
  3. 如果GTK开发包的解压位置在:C:\Soft\mingw32-4.8.5-gtk342_static\gtk342_static
  4. 如果你的解压在其他位置,替换下面命令中的路径即可
  5. 将如下内容保存到文本 gtk.cmd 中,可以简化编译命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
set PATH=C:\Soft\mingw32-4.8.5-gtk342_static\bin;%PATH%
set GTK_PATH=C:\Soft\mingw32-4.8.5-gtk342_static\gtk342_static

gcc -g -W -Wall %1.c -o %1.exe -I%GTK_PATH%\include\gtk-3.0 ^
-I%GTK_PATH%\include\glib-2.0 -I%GTK_PATH%\lib\glib-2.0\include ^
-I%GTK_PATH%\include\gdk-pixbuf-2.0 -I%GTK_PATH%\include\pango-1.0 ^
-I%GTK_PATH%\include\cairo -I%GTK_PATH%\include\atk-1.0 -L%GTK_PATH%\lib ^
-lgtk-3 -lgdk-3 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 ^
-lpango-1.0 -latk-1.0 -lcairo -lcairo-gobject -lpangocairo-1.0 ^
-lintl -lgmodule-2.0 -lgio-2.0 -limm32 -luser32 -lgdi32 -luuid ^
-lole32 -lpng -lgdiplus -lpangowin32-1.0 -lffi -lws2_32 -lwinmm ^
-lglib-2.0 -lpixman-1 -lfreetype -lfontconfig -lpangoft2-1.0 ^
-lmsimg32 -liconv -lshlwapi -lz -lgdi32 -ldnsapi -lusp10 ^
-lfreetype -lexpat -lgcc -lkernel32 -lmsvcrt -mwindows
  1. 如果源码文件为 First_Gtk.c ,那么可以这样来编译:gtk.cmd First_Gtk

3,注意事项

  1. 不要使用64位的GCC,因为本GTK开发包是32位的
  2. 不要使用高于4.8版本的GCC,因为 LTO 版本不一致会报错
  3. 记得将 C:\Soft\mingw32-4.8.5-gtk342_static\bin 目录添加到系统变量PATH,否则会找不到gcc命令的
  4. 建议自己去来源网站下载和配置,不过要注意上面几点