Стек не может найти -lncursesw - PullRequest
       7

Стек не может найти -lncursesw

0 голосов
/ 16 сентября 2018

Когда я пытаюсь скомпилировать мою программу на Haskell с помощью Stack, я получаю следующую ошибку:

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, он работает нормально, а libncursesw.so присутствует в / usr / lib. Я на Void Linux. Любые идеи, где стека ищет?

1 Ответ

0 голосов
/ 16 сентября 2018

Это похоже на проблему со стеком bindist, выбранным для Void Linux - обычно он угадывается правильно, но может вызывать проблемы в некоторых дистрибутивах. Вариант tinfo6 пытается загрузить libtinfo.so, поскольку некоторые дистрибутивы предоставляют ncurses6 через этот общий объектный файл. Вы можете попробовать настроить вариант вручную - вы, вероятно, захотите standard. Стек установит новую версию GHC, если вы это сделаете, но изменит общий объект, который пытается загрузить для ncurses.

EDIT:

Это на самом деле было вызвано проблемой с GHC - если дистрибутивные ссылки между различными ncurses файлами с компоновщиком file вместо реальной ссылки GHC выиграли ' следуйте этому правилу и вместо этого жалуйтесь, что файл не существует. Решение состоит в том, чтобы заменить файл компоновщика ссылкой на целевой объект.

...