堆栈找不到-lncursesw

时间:2018-09-16 02:56:17

标签: haskell haskell-stack

当我尝试使用Stack编译Haskell程序时,出现以下错误:

Building executable 'fractal' for fractal-0.1.0.0..
[1 of 2] Compiling Main             ( app/Main.hs, .stack-work/dist/x86_64-linux-tinfo6/Cabal-2.2.0.1/build/fractal/fractal-tmp/Main.o )
 <command line>: can't load .so/.DLL for: /usr/lib/gcc/x86_64-unknown-linux-gnu/8.2.0/../../../../lib/libtinfo.so (-lncursesw: cannot open shared object file: No such file or directory)

 --  While building custom Setup.hs for package fractal-0.1.0.0 using:
  /home/lorxu/.stack/setup-exe-cache/x86_64-linux-tinfo6/Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.3 --builddir=.stack-work/dist/x86_64-linux-tinfo6/Cabal-2.2.0.1 build lib:fractal exe:fractal --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"

当我直接使用GHC编译时,它可以正常工作,并且/ usr / lib中存在libncursesw.so。我在Void Linux上。有什么想法在寻找Stack?

1 个答案:

答案 0 :(得分:1)

这似乎是为Void Linux选择了bindist堆栈的问题-通常可以猜到是正确的,但是它可能会在某些发行版中引起问题。 tinfo6变量尝试加载libtinfo.so,因为某些发行版通过该共享库文件提供ncurses6。您可以尝试configuring the variant manually-您可能需要standard。如果执行此操作,Stack将安装新的GHC版本,但是它将更改它尝试为ncurses加载的共享对象。

编辑:

这实际上是由an issue with GHC引起的-如果使用链接器 file 的各个ncurses文件之间的发行版链接,而不是实际链接,GHC将不会跟随正确,而是抱怨该文件不存在。解决方案是将链接器文件替换为指向目标的链接。