windows - 在 Windows 的 Haskell Platform 7.10.2a 上安装 GTK3

标签 windows haskell gcc installation gtk3

有没有人在 Windows 上成功安装 gtk2hs?我在 Windows 10 上使用 Haskell Platform 7.10.2a,均为 64 位,并尝试运行 “cabal install gtk3”,但失败了在带有错误消息的 gio 包上:

gcc.exe:错误:无法识别的选项“-pthread”

(编辑额外注释:下面错误信息的下一行)

编译 dist\build\System\GIO\File\FileAttribute_hsc_make.c 失败(退出代码 1)

看来 Haskell Platform 包中 mingw 子文件夹中的 gcc 有点过时了。有什么办法可以更新这个子文件夹吗?我在 Internet 上找到的唯一线索是下面的链接,它似乎没有提供任何解决方案:

https://ghc.haskell.org/trac/ghc/ticket/10726

(编辑:gcc 的版本似乎无关。'-pthread' 开关在 Windows 下运行时似乎对 gcc 无效,它仅在 Linux 中有效,请参阅此链接,但我不知道为什么 GHC/GTK3正在使用 -pthread 并且不知道如何将其更改为 -mthread http://mingw-users.1079350.n2.nabble.com/pthread-vs-mthreads-td7114500.html )

在运行 cabal 之前,我使用 MSYS2 在 Windows 上安装了 GTK+ 3.18.0.1

我已经在 Linux 上轻松安装了 gtk2hs,完全没有问题。

最佳答案

更新:还获得了运行 Windows 10 64 位设备的 GTK3(来自下方的 bundle )。 我必须完成的额外步骤是包含 libintl.deflibintl.dll.a 从较旧的包到 lib 文件夹。我从 GTK2.x 包中获得了这两个文件,即 https://download.gnome.org/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip.mirrorlist ,否则 cabal 会提示缺少 C 库 intl。总结:

1) 从链接 http://www.tarnyko.net/dl/gtk.htm 获取 GTK3 x64 包.

2) 从旧版本中获取丢失的文件 libintl.deflibintl.dll.a 捆绑,即 GTK2(上面的链接)并将它们包含在 lib 文件夹中。

3) 先安装glib,运行cabal install glib。确保您具有管理员权限并且 GTK3/bin 在您的 PATH 变量中。此外, 您可以设置 LIB 和 INCLUDE 分别指向 GTK/lib 和 GTK/include 文件夹(可能不是必需的)。

4) 最后运行cabal install gtk3。您可以使用标志 --global。

(在 Windows 10、64 位、Haskell 平台 8.x 上测试)


Windows 7、64 位的安装步骤:(原帖)

我想通了如何在运行时在 Windows7(64 位)上安装 GTK3 Haskell 平台 7.10.3。因此,我必须完成以下步骤:

  1. http://www.tarnyko.net/dl/gtk.htm 下载 gtk3 64 位包(我个人用的是3.6版本的)
  2. 下载 gtk3 绑定(bind) https://hackage.haskell.org/package/gtk3 (0.14.5)
  3. 单独安装依赖项。这包括库 gio、glib 和 pango(在我的例子中不是 cairo)。 (cabal 安装包名称)
  4. 调整 gtk3.cabal 文件。我删除了以下几行(都在 5 行以内):
    • 如果操作系统( Darwin ) cpp-选项:-D__attribute__(A)=
    • -DWIN32(只有那个标志)
    • 额外库:kernel32
  5. 调整 gtk.h 文件(随 gtk3 包一起提供,include\gtk-3.0\gtk)我在#include 的包含操作之前定义了以下宏:

    定义 GDK_VERSION_3_0 (G_ENCODE_VERSION (3, 0))

    定义 GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_0

    定义 GDK_VERSION_MAX_ALLOWED GDK_VERSION_3_6

    定义 GDK_DISABLE_DEPRECATION_WARNINGS

  6. 将 MinGW 和 gtk3 文件夹 bin、include、lib 的路径添加到 PATH 变量中。

  7. 运行 cabal 安装 gtk3.cabal
  8. 以下技巧也对我有帮助(命令行参数):
    • --gcc-options="C=LANG"
    • --with-gcc="gcc.exe 的路径"
    • --全局

说实话,这与其说是知识,不如说是运气。花了我几个小时 找到解决方法。我对 haskell 的 gtk2 绑定(bind)有同样的麻烦。 ( Installing gtk2hs failure )

关于windows - 在 Windows 的 Haskell Platform 7.10.2a 上安装 GTK3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018689/

相关文章:

windows - 如何创建 Windows 8 风格的安装程序

haskell - Haskell 中的并行 "any"或 "all"

c++ - std::optional 的运算符重载不明确?

c - 使用 sizeof 表达式时数组被转换为指针?

gcc - nm 符号输出 t vs T 在共享 so 库中

windows - 在c/c++中使用检查函数编译Windows NT命令行代码循环

windows - FFMPEG管道从Windows上的命令行输入文件名

php - Symfony 中的操作系统独立供应商路径

haskell - 没有因使用 `X' 而产生的 (Show a) 实例

没有完整类型知识的 Haskell 多态调用