LinuxにHaskellプラットフォームを初めてインストールしようとしています(私もかなり新しいLinuxユーザーです)。被害者のシステムは新しいRedHatシステムです。そして、ここに含まれるすべては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)
そしてそれはそれがlibgmpを見つけたことを示しています。 libgmpは/ usr/local/libおよび/ usr/local/lib64にあります。これをさらに進める方法がわかりません。助言がありますか?
/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パッケージをインストールします。これにより、上記のシンボリックリンクが設定されますが、ディストリビューションでも同様に設定されます(したがって、更新するとシンボリックリンクも更新されるはずです)。