Cabal:重建包以使用更新的库

时间:2014-11-09 11:59:13

标签: haskell

我正在使用Ubuntu 14.10和GHC 7.6.3以及通过Ubuntu软件包安装程序安装的cabal,并尝试使用{na}安装的Heap数据结构:

cabal install heap

当我开始将库导入我的代码时,我收到以下链接错误:

...
Loading package primitive-0.5.0.1 ... linking ... done.
...
Loading package heap-1.0.0 ... linking ... done.
...
Loading package primitive-0.5.2.1 ... linking ... done
...

GHCi runtime linker: fatal error: I found a duplicate definition for symbol
   hsprimitive_memset_Word32
whilst processing object file
   /home/simon/.cabal/lib/primitive-0.5.2.1/ghc-7.6.3/HSprimitive-0.5.2.1.o
This could be caused by:
   * Loading two different object files which export the same symbol
   * Specifying the same object file twice on the GHCi command line
   * An incorrect `package.conf' entry, causing some object to be
     loaded twice.
GHCi cannot safely continue in this situation.  Exiting now.  Sorry.

This answer从概念上解释了要做什么,但说明不够具体,我无法遵循。

如何让Heap使用primitive-0.5.2.1(我假设这个使用过的库是过时的那个),或者我应该做一些完全不同的事情?

1 个答案:

答案 0 :(得分:0)

一种解决方案可能是专门安装早期版本的heap

cabal install heap-0.6.0

您可能必须先取消注册heap-1.0.0。

另一种选择是吹掉你的〜/ .ghc目录。当然,您必须重新安装cabal包。

我认为最好的选择是开始为您的项目使用cabal沙盒。

编辑:heap-1.0.0包含QuickCheck测试,因此引入了所有QuickCheck依赖项。要在没有QuickCheck的情况下安装该版本,请尝试以下方法:

  1. 在新目录中,运行cabal get heap-1.0.0
  2. cd heap-1.0.0
  3. 修改heap.cabal并移除Build-Depends:
  4. 运行cabal install