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

问题描述 投票:0回答:4

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

平台网站 [1] 上的说明表明我需要 ghc7.0.3 来 boostrap 东西。他们提供了 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)

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

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

linux haskell installation ghc
4个回答
35
投票

您可以将

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


18
投票

安装 gmp-devel 包对我的情况有帮助(opensuse)


5
投票

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

还有另一种适用于 RedHat/CentOS 以及扩展可能的 Fedora 的解决方案:安装 gmp-devel 软件包。这会设置上面的符号链接,但在发行版中这样做(因此更新也应该更新符号链接)。


0
投票

尝试安装

libgmp-dev
。例如,在 Ubuntu 上:

sudo apt-get update -y
sudo apt-get install -y libgmp-dev
© www.soinside.com 2019 - 2024. All rights reserved.