Wai模板函数找不到Libz.so

时间:2018-08-27 00:34:42

标签: haskell zlib yesod template-haskell haskell-wai

<command line>: can't load .so/.DLL for: libz.so (libz.so: cannot open shared object file: no such file or directory)

这是我在尝试安装某些WAI库时遇到的错误:

  • wai-app-static-3.1.6.2
  • wai-websockets-3.0.1.2

这似乎与Template Haskell having problems with dynamic linking有关。链接到zlib的其他程序包(或libz或z或libz1g或月份程序包管理器选择用来调用标准压缩库的任何形式)都可以正常工作,只有那些正在尝试在编译时动态链接到它的程序包时间。

我用过nix-env -i zlib && nix-shell -p zlib

我在apt-get installzlib1gzlib1g-devlib32z1,libc6-i386,zlib1g:i386,{{1 }},lib32stdc++6(?!),如其他zlib问题所建议。

lib32gcc1给出了lib32ncurses5,所以我认为该库实际上已安装。

我通过剥离所有TH代码获得了wai-app-static工作的简化版本,但是我不能在不破坏整个程序包的情况下从wai-websockets中提取它。

任何人都找到了一种安装这些库的方法,最好是与Nix一起安装,但是在这一点上我可以实现。我已经尝试了三天,以期能正常工作,并且花了整个星期的时间进行项目开发,而又没有编写自己的代码。此时,我将采取一切可行的措施。


有人要求使用命令行。这是cabal生成的:

whereis libz.so

1 个答案:

答案 0 :(得分:1)

我感觉到你很痛苦。
您可能已经尝试过这些,但是这里有一些随机的想法:

  • 确保符号链接/usr/lib/x86_64-linux-gnu/libz.so仍然具有有效的目标。
  • 在命令行中添加“ -L / usr / lib / x86_64-linux-gnu”。
  • 尝试在链接器命令行(ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html)中使用-rpath,尽管可能无济于事。
  • 确保编译器体系结构确实是x86_64-linux-gnu(gcc -print-multiarch)。

如果再有其他想法,我会回来的。 :-)

如果可以发布逐字gcc命令行,则可能会(或可能不会)有所帮助。