【发布时间】:2017-05-22 11:26:59
【问题描述】:
我在 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
我曾尝试以相同的方式使用freeglut 或mesa,但这些(甚至全部)都不起作用。
我错过了什么?
这个问题是相关的,但没有帮助:nixos + haskell + opengl (prerequisites)
解决方案:切换到堆栈后一切正常。
【问题讨论】:
-
你可以发布一个存储库以便我可以复制吗?
-
@iElectric,它可以是任何 Gloss MWE(例如,只显示一个圆圈),或者更有趣的东西,例如 RosettaCode snake game。
-
仔细阅读此页面后,我在使用 stack/nixos/gloss 时仍然面临所描述的问题。如果有人可以将最小的工作示例上传到 github 存储库,我将不胜感激。这将是非常好的。
-
@AntonHarald,对于没有这些链接器错误的存储库,请查看github.com/turion/rhine/tree/develop/rhine-gloss。但它还有另一个令人费解的错误,这一次与 GLUT 有关。