gpt4 book ai didi

haskell - NixOS、Haskell、opengl : problems with building and running openGL programs

转载 作者:行者123 更新时间:2023-12-02 10:23:10 25 4
gpt4 key购买 nike

我在 NixOS 上遇到 GL 的问题:这个问题似乎很老了,但 2017 年仍然没有直接的解决方案!

我正在尝试使用 Gloss 库构建 Haskell 程序。我已经使用 nix-shell -p mesa 安装了 gloss 及其所需的一切,并且它似乎已正确构建和安装(使用 cabal install )。但是,如果我在同一个 nix-shell 中构建程序,它就不起作用:

$ nix-shell -p mesa_glu

[nix-shell:]$ ghc --make -O2 SnakePar.hs
Linking SnakePar ...

[nix-shell:]$ ./SnakePar
SnakePar: user error (unknown GLUT entry glutInit)

nix-shell 之外工作时,链接阶段失败:

$ ghc --make -O2 SnakePar.hs
[1 of 1] Compiling Main ( SnakePar.hs, SnakePar.o )
Linking SnakePar ...
/nix/store/<hash>-binutils-2.27/bin/ld: cannot find -lGLU
/nix/store/<hash>-binutils-2.27/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
`cc' failed in phase `Linker'. (Exit code: 1)

即使我通过 nix-env -iA 手动安装了 glu 库,也会发生这种情况。

$ nix-env -q
cabal-install-1.24.0.0
ghc-8.0.1
glu-9.0.0

我尝试以相同的方式使用 freeglutmesa,但这些(甚至全部一起)都不起作用。

我错过了什么?

这个问题是相关的,但没有帮助:nixos + haskell + opengl (prerequisites)

解决方案:切换到堆栈后一切正常。

最佳答案

刚刚解决了这个问题,三天后,好吧,成为另一个不高兴的 Arch 用户,直到上周:尝试将 freeglut 添加到 nix-shell 环境,即使用 nix-shell -p mesa freeglut

对于偶然发现此答案的 stack 用户,请将其添加到 ~/.stack/stack.yaml:

nix:
enable: true
packages: [mesa freeglut]

nix-shell 解决方案在这种情况下不起作用 - 正如我猜测的那样,问题在于 Stack 始终在纯环境中工作,即使是从 内部运行>nix-shell。我确实在 stack.yamlnix 部分尝试了 pure: false,但这不起作用。目前确实如此。

  • mesa 需要为 OpenGLRaw 和其他库提供 C 头文件(我相信这就是您的情况下链接失败的原因)。
  • freeglut 提供运行时所需的 GLUT 绑定(bind)(否则您将收到“未知的 GLUT 条目”错误)。

您可能需要将其中的 mesa 更改为其他内容,例如 mesa_glu

关于haskell - NixOS、Haskell、opengl : problems with building and running openGL programs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com