【问题标题】:Cross compile GTK+ application from Linux to Windows?将 GTK+ 应用程序从 Linux 交叉编译到 Windows?
【发布时间】:2010-11-06 13:24:45
【问题描述】:

如何将我的 GTK+ 应用程序(用 C 编写)从 Linux 交叉编译到 Windows?我可以用“mingw32”替换“gcc”命令吗?

【问题讨论】:

    标签: c windows linux gtk cross-compiling


    【解决方案1】:

    Fedora 有一个很棒的 mingw32 交叉编译器工具链,它带有许多预编译库,包括 GTK+ 和 gtkmm。对于大多数应用程序,您只需要安装交叉编译器和交叉编译的 GTK+ 库: 百胜安装mingw32-gcc mingw32-gtk2

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

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

    【讨论】:

      【解决方案2】:

      您可以使用mingw-cross-env - 然后您所要做的就是更改您的 CC/CXX 环境路径以使用 i686-mingw32- 前缀并将 mingw-cross-env bin 目录(两者)导出到您的 PATH 变量(或者如果您使用的是 autotool,那就更容易了) - 请参阅主页上的文档。

      【讨论】:

      • 不完全是,为 GTK 获取 CFLAGS 和东西并不是那么简单,您需要确保 pkg-config 找到正确的位置
      【解决方案3】:

      实际上有一个名为 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 项目:

      对于 GTK3 和 Gtkmm3 在 Windows 64 位下的静态构建:

      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'
      

      更多信息请参阅tutorial steps on MXE.cc

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

      脚本(如x86_64-w64-mingw32.static-cmake)现在可用于将您的项目编译到 Windows,同时使用 Linux 操作系统。构建结果将是 Windows .exe

      免责声明:我个人正忙于将 MXE 中的 whole GTK3/Gtkmm3 stack 更新到 最新 GTK 3.24 版本。我会及时通知你的!

      【讨论】:

        猜你喜欢
        • 2021-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 2023-01-27
        相关资源
        最近更新 更多