GHC未定义对依赖路径的引用

时间:2015-06-23 00:09:33

标签: haskell linker linker-errors ghc cabal

我最近制作了一个cabal包,可以看到here 它由一个库和一些使用它的小例子程序组成。一切都按照预期建立和运作。

我想在一个使用这个库的新软件包中构建一个可执行文件,但是我仍然遇到一个我无法破译的链接错误:

/my/path/RandomAgent/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/rlglue-0.2.1.1/libHSrlglue-0.2.1.1.a(Agent.o):(.text+0x34f1): undefined reference to `rlgluezm0zi2zi1zi1_Pathszurlglue_version1_closure'

collect2:错误:ld返回1退出状态 为了简化诊断,我将其中一个示例程序移动到我的新程序包中,发现它甚至不能正确构建。您可以找到该可执行文件的here版本。

由此我得出的结论是,问题很可能出现在我的.cabal文件中,但是我无法看清楚是什么问题。该错误似乎也指代了cabal为第一个包自动生成的Paths_rlglue模块。

任何人都可以帮助我理解为什么我会收到此错误吗?

2 个答案:

答案 0 :(得分:5)

您需要在exposed-modules或其他模块中包含Paths_rlglue模块,例如项目中的任何其他模块,以便Cabal将其链接。

Cabal应该更好地告诉你发生了什么,请参阅https://github.com/haskell/cabal/issues/1746

答案 1 :(得分:2)

看起来我错过了Paths_pkgname

的文档中的内容
  

如果您决定导入Paths_pkgname模块,那么它必须是   在other-modules字段中列出,就像你的其他任何模块一样   封装

将Paths_rlglue添加到我的库的其他模块中解决了这个问题。希望这可以节省一些人,因为我失去了这个。