我一直在尝试在没有安装GNU Multi-Precision软件包(GMP)的系统上的用户空间中安装在Linux上安装的Haskell Platform和cabal-install
。
我设法安装了GHC-6.12.1并且GHCi正在设置LB_LIBRARY_PATH
指向我安装GMP的lib目录,但是在下一步遇到了问题,得到了{{1} } 上班。它一直试图(静态地)链接到GMP。
这失败了,因为系统中没有安装GMP,cabal-install
没有找到库的位置,也没有可以告诉ld到哪里的环境变量(我知道)找到用户安装的GMP,并且(显然)无法告知配置Cabal提供相关的ld
标志。
经过多次徒劳无功的搜索和黑客攻击后,我想到了安装我自己的-L
shell脚本的荒谬简单想法,该脚本使用相应的ld
标志来调用系统ld
。
这是shell脚本101,当然:
-L
在#!/bin/sh
/usr/bin/ld -L$HOME/gnu/lib "$@"
PATH
之前的/usr/bin
目录中安装此脚本时,所有问题似乎都已消失。
答案 0 :(得分: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