在GHC字节字符串连接(Bytestring linking in ghc)

2019-08-02 09:12发布

考虑下面简单的代码:

import Crypto.Hash.SHA1 (hashlazy)
import qualified Data.ByteString as BS
main = return ()

我安装cabal install --global bytestring (GHC使用7.4.1新安装的Ubuntu 12.04的计算机上),然后我得到:

GHCi runtime linker: fatal error: I found a duplicate definition for symbol
   fps_minimum
whilst processing object file
   /usr/local/lib/bytestring-0.10.0.1/ghc-7.4.1/HSbytestring-0.10.0.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.

我可以做什么?

Answer 1:

这是钻石的依赖问题。 你有一个版本内置针对字节字符串的一个版本cryptohash的,但对建另一个GHC系统的其余部分。 因此,当包连在了一起,两个略有不同的字节串的版本链接。

通常,这是确定的,只要字节字符串类型兼容。

然而,字节串包括一些公用事业小C库。 C库具有非唯一的符号,防止重复的链接,因此您的错误。

您需要确保cryptohash是对同一版本的字节串的建造。



文章来源: Bytestring linking in ghc