【问题标题】:Installing GTK3 on Haskell Platform 7.10.2a for Windows在 Haskell Platform 7.10.2a for Windows 上安装 GTK3
【发布时间】:2017-09-03 03:42:13
【问题描述】:

有人在 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 似乎有点过时了。有没有办法更新这个子文件夹?我在互联网上找到的唯一线索是下面的链接,它似乎没有提供任何解决方案:

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

(编辑:gcc 的版本似乎无关。在 Windows 下运行时,'-pthread' 开关似乎对 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,完全没有问题。

【问题讨论】:

  • 我很确定您不能更改 ghc 附带的 mingw 否则它会损坏,但您应该使用不同的 C 编译器构建 gtk(支持 Windows 上 pthreads 的编译器......不是确定这是不是一件事)。
  • 对不起,我之前没说清楚,gcc 问题不在于 GTK+ 本身,而在于 Cabal 试图在 Gtk2Hs 包中编译 .hsc 文件。编译.hsc文件时,需要gcc,见:downloads.haskell.org/~ghc/latest/docs/html/users_guide/…我在网上发现MinGHC和Stack都使用MSYS,所以我想也许他们可以通过从MSYS内部更新gcc来解决gcc版本的问题,但没有运气所以远,还在努力。

标签: windows haskell gcc installation gtk3


【解决方案1】:

更新:还获得了运行 Windows 10 64 位设备的 GTK3(来自下方的捆绑包)。 我必须完成的额外步骤是包含 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绑定https://hackage.haskell.org/package/gtk3(0.14.5)
  3. 单独安装依赖项。这包括 gio、glib 和 pango 库(在我的例子中不是 cairo)。 (cabal 安装包名)
  4. 调整 gtk3.cabal 文件。我删除了以下几行(都在 5 行之内):
    • 如果操作系统(达尔文) 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 install gtk3.cabal
  8. 以下技巧也帮助了我(命令行参数):
    • --gcc-options="C=LANG"
    • --with-gcc="gcc.exe 的路径"
    • --全局

说实话,这更多的是运气而不是知识。花了我几个小时 找到解决方法。我在使用haskell 的gtk2 绑定时遇到了同样的麻烦。 (Installing gtk2hs failure)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2021-11-20
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多