haskell - 使用 GHC,在用户空间安装带有 GMP 的 cabal

标签 haskell ghc cabal gmp haskell-platform

我一直在尝试在未安装 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/

相关文章:

haskell - forkProcess有多危险?如何安全使用?

haskell - 2014 年 haskell cabal 更新卡在 mac 上

haskell - 我有同一个 haskell/cabal 软件包的多个安装版本。哪一款投入使用?

haskell - cabal build --ghc-options ="-fforce-recomp -Wall -fno-code"失败

haskell - 如何展平haskell中的列表列表

list - 使用 Haskell 中的函数将列表的列表与列表组合起来

parsing - 避免具有许多类似构造函数的数据类型的代码重复

haskell - 从哪里开始 "Couldn' t 将类型 MyId 与 MyId 匹配”

haskell - cabal:无法配置 random-1.0.1.3。它需要 base >=5 && <5

haskell - 如何在内部类型声明中重用类型变量