我正在使用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(我假设这个使用过的库是过时的那个),或者我应该做一些完全不同的事情?
答案 0 :(得分:0)
一种解决方案可能是专门安装早期版本的heap
:
cabal install heap-0.6.0
您可能必须先取消注册heap-1.0.0。
另一种选择是吹掉你的〜/ .ghc目录。当然,您必须重新安装cabal包。
我认为最好的选择是开始为您的项目使用cabal沙盒。
编辑:heap-1.0.0包含QuickCheck测试,因此引入了所有QuickCheck依赖项。要在没有QuickCheck的情况下安装该版本,请尝试以下方法:
cabal get heap-1.0.0
cd heap-1.0.0
heap.cabal
并移除Build-Depends:
行cabal install