从Linux交叉编译GTK+应用程序到Windows?

6

如何将我用C语言写的GTK+应用程序从Linux交叉编译到Windows?我能否仅将"gcc"命令替换为"mingw32"?

3个回答

2

Fedora拥有出色的mingw32跨编译工具链,其中包括许多预编译库,包括GTK+和gtkmm。对于大多数应用程序,您只需要安装交叉编译器和交叉编译的GTK+库: yum install mingw32-gcc mingw32-gtk2

一旦安装了所需的一切,编译您的应用程序只需要运行“mingw32-configure”,然后运行“make”。

更多信息请参见项目页面 https://fedoraproject.org/wiki/MinGW


0

实际上有一个名为MXE的项目可以完美地实现这一点。

预构建软件包

如果您想要,您可以下载我的预构建二进制文件

从源代码构建

您还可以从头开始构建代码,理想情况下还应用this PR以更新到最新的GTK 3.24版本。

MXE有一个简单的包装器(x86_64-w64-mingw32.static-cmake),可以在Linux上使用时交叉构建您的项目,面向Windows。允许将您的项目均匀静态地构建成单个.exe文件!当然,也支持共享构建(x86_64-w64-mingw32.shared-cmake)。示例包装器脚本适用于基于CMake的项目。

在使用MXE构建项目之前,您需要从源代码构建GTK3。(虽然有一些Linux软件包可用,但大多已过时)。如果您正在使用C ++,还可以构建gtkmm3。由于您是在C中,因此只需要构建gtk3

  1. git clone https://github.com/mxe/mxe.git
  2. 成为root用户:su
  3. mv mxe /opt/mxe
  4. cd /opt/mxe
  5. 自己构建MXE项目:

对于Windows 64位下的静态构建,需要GTK3和Gtkmm3:

sudo make gtk3 gtkmm3 -j 16 MXE_TARGETS='x86_64-w64-mingw32.static' MXE_PLUGIN_DIRS='plugins/gcc12'

针对共享构建到 Windows 64 位(再次使用 GTK3 + Gtkmm3):

sudo make gtk3 gtkmm3 -j 16 MXE_TARGETS='x86_64-w64-mingw32.shared' MXE_PLUGIN_DIRS='plugins/gcc12'

更多信息请参见MXE.cc上的教程步骤

一旦您完成了交叉编译环境/MXE构建。现在,您可以使用我之前提到的CMake包装器脚本。这些脚本位于/opt/mxe/usr/bin/目录中。

现在可以使用这些脚本(如x86_64-w64-mingw32.static-cmake)来将您的项目编译为Windows,同时使用Linux操作系统。构建结果将是一个Windows .exe文件。

免责声明:我个人创建了MXE的此PR以更新GTK到最新的3.24.x版本。


0

你可以使用mingw-cross-env - 你所需要做的就是将你的CC/CXX环境路径更改为i686-mingw32-前缀,并将mingw-cross-env bin目录(两个)导出到你的PATH变量中(如果你正在使用autotool,那么这将更加容易)- 可以在主页上查看文档。


不太对,获取GTK的CFLAGS和相关内容并不是那么简单,你需要确保pkg-config正在查找正确的位置。 - Spudd86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接