Installation des binaires ghc sous Linux (impossible de trouver libgmp.so)
J'essaie d'installer la plate-forme Haskell sur Linux pour la première fois (je suis aussi un utilisateur Linux assez nouveau). Le système victime est un nouveau système Red Hat. Et tout ce qui est impliqué ici devrait être 64 bits.
Les instructions sur le site Web de la plate-forme [1] indiquent que j'ai besoin d'un ghc7.0.3 pour boostrap choses. Ils fournissent un lien binaire générique de ghc-7.0.3 pour ce faire. J'ai récupéré ceci et couru
$ ./configure ...
$ make install ...
Selon les instructions sans incident (c'est un binaire, donc pas de compilation nécessaire) Cependant, quand j'ai essayé d'exécuter ghci, j'obtiens la sortie.
$ 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)
Pour une raison quelconque ghci ne peut pas trouver libgmp.so. L'exécution de ghci appelle finalement
/usr/local/lib/ghc-7.0.3/ghc
Avec un gâchis d'options. J'ai vérifié les dépendances 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)
Et il montre qu'il foud libgmp. libgmp est dans /usr/local/lib et /usr/local/lib64. Je ne suis pas sûr de la façon d'obtenir plus loin avec cette. Toutes les suggestions?
3 réponses
, soit Vous ajoutez /usr/local/lib
et/ou /usr/local/lib64
à $LD_LIBRARY_PATH
, ou les ajouter à /etc/ld.so.conf
, ou (puisque vous avez déjà /usr/lib64/libgmp.so.3
) ajouter un manque de lien symbolique:
cd /usr/lib64
sudo ln -s libgmp.so.3 libgmp.so
(et peut-être la même chose pour /usr/lib).
Notez que/usr/lib64 /libgmp.so.3 peut être une version différente de/usr/local/lib64 / libgmp.alors, assurez-vous que ghc peut réellement être utilisé avec le premier.
L'installation du paquet GMP-devel a aidé dans mon cas (opensuse)
Je ne suis pas sûr que la définition d'un lien symbolique de libgmp.so pour libgmp. so. 3 est la bonne façon d'aller. Que se passe-t-il lorsque vous obtenez une mise à jour de version et que libgmp.so.3 disparaît. Définir LD_LIBRARY_PATH semble être une meilleure solution.
Il y a aussi une autre solution Pour RedHat / CentOS et par extension probablement Fedora: installer le paquet GMP-devel. Cela met en place le lien symbolique ci-dessus, mais le fait avec dans la distribution (donc les mises à jour doivent également mettre à jour le lien symbolique).