编译Haskell程序时链接器错误

时间:2016-01-09 07:42:25

标签: haskell linker-errors

我正在使用happstack在Haskell中编写Web服务器。 Web服务器将算术等式作为输入,对其进行求值并返回结果。在服务器端,我需要缓存任何先前查询的结果。我正在使用redis键值数据存储。以下是我到现在所写的内容。

$ ghc calcServer.hs -XDeriveDataTypeable
Linking calcServer ...
/home/siddhant/.cabal/lib/text-1.2.2.0/ghc-7.6.3/libHStext-1.2.2.0.a(cbits.o): In function `_hs_text_memcpy':
cbits.c:(.text+0x0): multiple definition of `_hs_text_memcpy'
/usr/lib/haskell-packages/ghc/lib/text-0.11.3.1/ghc-7.6.3/libHStext-0.11.3.1.a(cbits.o):(.text+0x0): first defined here
/home/siddhant/.cabal/lib/text-1.2.2.0/ghc-7.6.3/libHStext-1.2.2.0.a(cbits.o): In function `_hs_text_memcmp':
cbits.c:(.text+0x20): multiple definition of `_hs_text_memcmp'
/usr/lib/haskell-packages/ghc/lib/text-0.11.3.1/ghc-7.6.3/libHStext-0.11.3.1.a(cbits.o):(.text+0x20): first defined here
/home/siddhant/.cabal/lib/text-1.2.2.0/ghc-7.6.3/libHStext-1.2.2.0.a(cbits.o): In function `_hs_text_decode_latin1':
cbits.c:(.text+0x40): multiple definition of `_hs_text_decode_latin1'
/usr/lib/haskell-packages/ghc/lib/text-0.11.3.1/ghc-7.6.3/libHStext-0.11.3.1.a(cbits.o):(.text+0x40): first defined here
/home/siddhant/.cabal/lib/text-1.2.2.0/ghc-7.6.3/libHStext-1.2.2.0.a(cbits.o): In function `_hs_text_decode_utf8':
cbits.c:(.text+0x2a0): multiple definition of `_hs_text_decode_utf8'
/usr/lib/haskell-packages/ghc/lib/text-0.11.3.1/ghc-7.6.3/libHStext-0.11.3.1.a(cbits.o):(.text+0xf0): first defined here
collect2: error: ld returned 1 exit status

在编译上述程序时,我收到以下错误:

p.Fun()

我猜可能是因为链接了相同二进制文件的不同版本。我对吗? 请帮我解决此错误

1 个答案:

答案 0 :(得分:0)

您似乎安装了两个text个包。请尝试ghc-pkg list text进行确认。如果是这种情况,您可以隐藏其中一个,例如ghc -hide-package=text-1.2.0.3。注意:它也可能导致其他一些软件包被隐藏,在这种情况下,您可以使用stack来代码或使用text来确保只链接一个版本的hs_text_memcpy

$this->datatables->where("(ReceiverId=$id OR SenderId=$id )"); 等功能来自此处:https://github.com/bos/text/blob/master/cbits/cbits.c#L14