haskell 在Linux上安装ghc二进制文件(找不到libgmp.so)

bbuxkriu  于 2023-10-19  发布在  Linux
关注(0)|答案(4)|浏览(239)

我第一次尝试在Linux上安装Haskell平台(我也是一个相当新的Linux用户)。受害者系统是一个新的红帽系统。这里涉及的所有内容都应该是64位的。
平台网站上的说明[1]表明我需要一个ghc7.0.3来 Bootstrap 。他们提供了一个链接到一个通用的二进制文件ghc-7.0.3来完成这一任务。我拿了这个就跑了

  1. $ ./configure ...
  2. $ make install ...

按照没有事件的方向(它是一个二进制文件,所以不需要编译)然而,当我试图运行ghci我得到的输出。

  1. $ ghci
  2. GHCi, version 7.0.3: http://www.haskell.org/ghc/ :? for help
  3. Loading package ghc-prim ... linking ... done.
  4. Loading package integer-gmp ... <command line>: can't load .so/.DLL for: gmp (libgmp.so: cannot open shared object file: No such file or directory)

由于某些原因,ghci找不到libgmp.so。运行ghci最终会调用

  1. /usr/local/lib/ghc-7.0.3/ghc

有很多选择我通过ldd检查了依赖项

  1. $ ldd /usr/local/lib/ghc-7.0.3/ghc
  2. linux-vdso.so.1 => (0x00007fffe5f5c000)
  3. libncursesw.so.5 => /lib64/libncursesw.so.5 (0x0000003ee7000000)
  4. librt.so.1 => /lib64/librt.so.1 (0x0000003ee5800000)
  5. libutil.so.1 => /lib64/libutil.so.1 (0x0000003ef3000000)
  6. libdl.so.2 => /lib64/libdl.so.2 (0x0000003ee5000000)
  7. libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x0000003ee4400000)
  8. libm.so.6 => /lib64/libm.so.6 (0x0000003ee4c00000)
  9. libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003ee5400000)
  10. libc.so.6 => /lib64/libc.so.6 (0x0000003ee4800000)
  11. libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003ef3400000)
  12. /lib64/ld-linux-x86-64.so.2 (0x0000003ee4000000)

这表明它是libgmp的。libgmp位于/usr/local/lib和/usr/local/lib 64中。我不知道如何进一步与此。有什么建议吗?
[1][http://hackage.haskell.org/platform/linux.html](http://hackage.haskell.org/platform/linux.html)

r9f1avp5

r9f1avp51#

您可以将/usr/local/lib和/或/usr/local/lib64添加到$LD_LIBRARY_PATH,或者将它们添加到/etc/ld.so.conf,或者(因为您已经有了/usr/lib64/libgmp.so.3)添加一个缺少的符号链接:

  1. cd /usr/lib64
  2. sudo ln -s libgmp.so.3 libgmp.so

(and也许/usr/lib也是如此)。
请注意,/usr/lib 64/libgmp.so可能与/usr/local/lib 64/libgmp.so不同,请确保ghc实际上可以与前者一起使用。

iq3niunx

iq3niunx2#

安装gmp-devel包在我的例子中有帮助(opensuse)

qybjjes1

qybjjes13#

我不确定设置一个从libgmp.so到libgmp.so.3的符号链接是否正确。当你得到一个版本更新,libgmp.so.3消失了,会发生什么?设置LD_LIBRARY_PATH似乎是一个更好的解决方案。
还有另一种解决方案适用于RedHat/CentOS,通过扩展可能是Fedora:安装gmp-devel包。这将设置上面的符号链接,但在发行版中这样做(因此更新也应该更新符号链接)。

neekobn8

neekobn84#

尝试安装libgmp-dev。例如,在Ubuntu上:

  1. sudo apt-get update -y
  2. sudo apt-get install -y libgmp-dev

相关问题