使用GHC,在用户空间安装GMP的cabal

chr*_*nan 8 haskell gmp ghc cabal haskell-platform

我一直在尝试安装Haskell平台,并cabal-install在没有安装GNU Multi-Precision软件包(GMP)的系统上在用户空间的Linux上安装.

我设法安装了GHC-6.12.1并且GHCi通过设置LB_LIBRARY_PATH指向我安装GMP的lib目录cabal-install来工作,但是在下一步遇到问题,开始工作.它一直试图(静态地)链接到GMP.

这失败是因为GMP没有安装在系统中并且ld没有找到库的位置,并且没有环境变量(我知道)可以告诉ld在哪里可以找到用户安装的GMP,以及(显然)没有办法告诉配置Cabal提供相关-L标志.

经过多次徒劳无功的搜索和黑客攻击后,我找到了一个荒谬的简单想法,即安装我自己的ldshell脚本,调用ld具有相应-L标志的系统.

这是shell脚本101,当然:

#!/bin/sh
/usr/bin/ld -L$HOME/gnu/lib "$@"
Run Code Online (Sandbox Code Playgroud)

有了这个脚本安装在我PATH之前的目录中/usr/bin所有的问题似乎已经消失了.

Dun*_*tts 10

基本上,你的ghc还没有工作.是的,它可以编译东西,但它不能链接程序,因为它需要将它们链接到gmp.

我们可以做的是编辑一些核心包,例如rts包,这样ghc将始终使用正确的-L标志:

ghc-pkg describe rts > rts.pkg
vi rts.pkg                      # add the gmp dir to the `library-dirs` field
sudo ghc-pkg update rts.pkg
Run Code Online (Sandbox Code Playgroud)

  • 这些图书馆目录的分隔符就是空间. (3认同)