8

我一直在尝试在cabal-install没有安装 GNU 多精度包 (GMP) 的系统上安装 Haskell 平台并安装在用户空间中的 Linux 上。

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

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

经过多次徒劳的搜索和黑客尝试后,我想到了安装我自己的 shell 脚本的荒谬简单的想法,该脚本使用适当的标志ld调用系统。ld-L

这是 shell 脚本 101,当然:

#!/bin/sh
/usr/bin/ld -L$HOME/gnu/lib "$@"

随着这个脚本安装在我PATH前面的目录中,/usr/bin所有问题似乎都消失了。

4

1 回答 1

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
于 2010-10-14T07:41:43.127 回答