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

时间:2011-06-15 16:00:08

标签: linux haskell installation ghc

我是第一次尝试在Linux上安装Haskell平台(我也是一个相当新的Linux用户)。受害者系统是一个全新的Red Hat系统。这里涉及的一切都应该是64位。

平台网站上的指示[1]表明我需要一个ghc7.0.3来提升物品。它们提供了指向ghc-7.0.3的通用二进制文件的链接。我拿了这个然后跑了

$ ./configure ...
$ make install ...

按照指示没有事故(它是二进制文件,所以不需要编译) 但是,当我尝试运行ghci时,我得到了输出。

$ ghci
GHCi, version 7.0.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
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最终会调用

  /usr/local/lib/ghc-7.0.3/ghc

有很多选择。我通过ldd

检查了依赖项
$ ldd /usr/local/lib/ghc-7.0.3/ghc
    linux-vdso.so.1 =>  (0x00007fffe5f5c000)
    libncursesw.so.5 => /lib64/libncursesw.so.5 (0x0000003ee7000000)
    librt.so.1 => /lib64/librt.so.1 (0x0000003ee5800000)
    libutil.so.1 => /lib64/libutil.so.1 (0x0000003ef3000000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003ee5000000)
    libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x0000003ee4400000)
    libm.so.6 => /lib64/libm.so.6 (0x0000003ee4c00000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003ee5400000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003ee4800000)
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003ef3400000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003ee4000000)

它表明它是foud libgmp。 libgmp位于/ usr / local / lib和/ usr / local / lib64中。 我不知道如何进一步解决这个问题。有什么建议吗?

[1] http://hackage.haskell.org/platform/linux.html

3 个答案:

答案 0 :(得分:36)

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

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

(对于/ usr / lib可能也是一样)。

请注意/usr/lib64/libgmp.so.3可能与/usr/local/lib64/libgmp.so的版本不同,请确保ghc实际上可以与前者一起使用。

答案 1 :(得分:10)

在我的情况下安装gmp-devel包(opensuse)

答案 2 :(得分:3)

我不确定从libgmp.so到libgmp.so.3的设置符号链接是正确的方法。获得版本更新后会发生什么,因此libgmp.so.3消失了。设置LD_LIBRARY_PATH似乎是一个更好的解决方案。

RedHat / CentOS还有另一种解决方案,可能还有Fedora:安装gmp-devel软件包。这将设置上面的符号链接,但在分发中这样做(因此更新也应更新符号链接)。