Cabal忽略了clang调用中的--extra-lib-dirs选项

时间:2014-10-20 15:19:12

标签: haskell cabal cabal-install

我正在尝试在OS X上安装byteable软件包,但Cabal因错误ld: library not found for -lgmp而失败。我确实安装了libgmp,但是在非标准位置,LOCATION=$HOME/homebrew/lib。 (即$LOCATION/libgmp.dylib存在)。

我尝试在我的Cabal .config文件和命令行调用(即extra-lib-dirs)中使用cabal install --extra-lib-dirs="$LOCATION" byteable选项,但我得到了相同的链接器错误。当我使用详细选项(--verbose=3)时,我可以看到对clang的调用实际上 not 包含$LOCATION选项中的-L目录。

在软件包安装过程中,我需要做些什么才能让cabal搜索其他库目录?

1 个答案:

答案 0 :(得分:4)

这可能不是一个很好的解决方案,但您可以在执行libgmp时将LIBRARY_PATH的位置添加到cabal install环境变量。

在您的情况下,例如:

LIBRARY_PATH=$HOME/homebrew/lib:$LIBRARY_PATH cabal install <package>

或者,对于标准的Homebrew位置:

LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH cabal install <package>

不幸的是,虽然我可以找到关于gcc LIBRARY_PATH的文档,但我找不到任何描述它用于clang的内容。但是,上面的解决方案Works For Me(TM)和我上午运行clang。

这似乎与优胜美地有所不同。我对优胜美地 Beta cabal install没有问题,我跑了好几个月。但是,当我执行Yosemite的全新安装时,我遇到了您描述的相同问题,因为clang无法找到libgmp