2014-10-20 33 views
2

我试图在OS X上安装byteable程序包,但Cabal失败,出现错误ld: library not found for -lgmp。我确实已经安装了libgmp,但在非标准位置,在LOCATION=$HOME/homebrew/lib。 (即存在$LOCATION/libgmp.dylib)。Cabal忽略-extra-lib-dirs选项在clang调用中

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

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

+0

该标志是extra-lib- * dirs *。您将其指向包含库的目录,而不是库本身。 – user2407038 2014-10-20 16:46:54

+0

对不起,这不清楚 - 我实际上是指定目录。 – NoThatIsTeal 2014-10-21 23:39:35

回答

4

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

在你的情况,是这样的:

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

或者,标准家酿位置:

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

不幸的是,虽然我可以在LIBRARY_PATH找到文档GCC,我找不到描述它用于叮当声的任何内容。但是,上述解决方案Works For Me(TM)和我运行铛。

这似乎是与优胜美地打破的东西。我与cabal install没有问题,优胜美地Beta,我跑了几个月。但是,当我做了优胜美地的全新安装时,我遇到了与您描述的相同的问题,叮当声无法找到libgmp

+0

呃,我以为我已经尝试过使用该标志,但显然不是。我实际使用的是10.9,而不是10.10。 – NoThatIsTeal 2014-10-21 23:38:08

+0

由于某种原因,cabal *也*开始尊重--extra-lib-dirs选项。我真的不知道是什么改变了。但是你的答案对我来说确实有效。 – NoThatIsTeal 2014-10-21 23:50:13