有没有人在 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.def 和 libintl.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.def 和 libintl.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。因此,我必须完成以下步骤:
- 从 http://www.tarnyko.net/dl/gtk.htm 下载 gtk3 64 位包(我个人用的是3.6版本的)
- 下载 gtk3 绑定(bind) https://hackage.haskell.org/package/gtk3 (0.14.5)
- 单独安装依赖项。这包括库 gio、glib 和 pango(在我的例子中不是 cairo)。 (cabal 安装包名称)
- 调整 gtk3.cabal 文件。我删除了以下几行(都在 5 行以内):
- 如果操作系统( Darwin ) cpp-选项:-D__attribute__(A)=
- -DWIN32(只有那个标志)
- 额外库:kernel32
调整 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
将 MinGW 和 gtk3 文件夹 bin、include、lib 的路径添加到 PATH 变量中。
- 运行 cabal 安装 gtk3.cabal
- 以下技巧也对我有帮助(命令行参数):
- --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/