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

我想第一次在Linux上安装Haskell平台(我也是一个相当新的Linux用户)。 受害者系统是一个新的红帽系统。 而这里涉及的所有内容都应该是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 

有一堆select。 我通过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) 

它显示它是libgmp。 libgmp位于/ usr / local / lib和/ usr / local / lib64中。 我不知道如何进一步得到这个。 有什么build议么?

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

Solutions Collecting From Web of "在Linux上安装ghc二进制文件(找不到libgmp.so)"

您可以将/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实际上可以与前者一起使用。

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

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

RedHat / CentOS还有另一种解决方案,可能是Fedora的扩展:安装gmp-devel软件包。 这建立了上面的符号链接,但在分布中这样做(所以更新应该也更新符号链接)。