我一直在尝试在未安装 GNU 多精度软件包 (GMP) 的系统上的用户空间中安装 Haskell Platform 和安装在 Linux 上的 cabal-install
。
我通过设置 LB_LIBRARY_PATH 来指向安装 GMP 的 lib 目录,成功安装了 GHC-6.12.1 并让 GHCi 正常工作,但在下一步中遇到了问题,cabal-install
即可工作。它一直尝试(静态)链接到 GMP。
这会失败,因为系统中没有安装 GMP,并且 ld
不知道在哪里可以找到库,并且没有环境变量(据我所知)可以告诉ld 在哪里可以找到用户安装的 GMP,并且(显然)无法告诉配置 Cabal 提供相关的 -L
标志。
经过多次无果的搜索和黑客尝试后,我想到了一个极其简单的想法,即安装我自己的 ld
shell 脚本,该脚本使用适当的 调用系统
标志。ld
- L
这当然是 shell 脚本 101:
#!/bin/sh
/usr/bin/ld -L$HOME/gnu/lib "$@"
将此脚本安装在我的 PATH
上 /usr/bin
之前的目录中,所有问题似乎都消失了。
最佳答案
基本上,你的 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
关于haskell - 使用 GHC,在用户空间安装带有 GMP 的 cabal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2558166/