且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-11-17 12:44:16

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



$ p $ cd $ us $ lib64 $ b $ sudo ln -s libgmp.so.3 libgmp.so

(也可能与/ usr / lib相同) 。

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

I am trying to install the Haskell Platform on Linux for the first time (I'm also a fairly new Linux user). The victim system is a fresh Red Hat system. And everything involved here should be 64 bit.

The directions at the platform website [1] indicate that I need a ghc7.0.3 to boostrap things. They provide a link to a generic binary of ghc-7.0.3 to do this. I fetched this and ran

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

as per the directions without incident (it is a binary, so no compilation needed) However, when I tried to run ghci I get the output.

$ 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)

For some reason ghci cannot find libgmp.so. Running ghci ultimately invokes

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

with a mess of options. I checked the dependencies via 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)

and it shows that it foud libgmp. libgmp is in /usr/local/lib and /usr/local/lib64. I am not sure how to get further with this. Any suggestions?

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

You either add /usr/local/lib and/or /usr/local/lib64 to $LD_LIBRARY_PATH, or add them to /etc/ld.so.conf, or (since you already have /usr/lib64/libgmp.so.3) add a missing symbolic link:

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

(and perhaps the same for /usr/lib).

Note that /usr/lib64/libgmp.so.3 might be a different version from /usr/local/lib64/libgmp.so, make sure ghc can actually be used with the former.