Haskell cabal构建未定义的引用错误和重复重新编译

Jus*_*ond 7 haskell cabal

我的问题分为两部分.首先,当我编译我的项目时,我得到了一个很长的表单错误列表

  (.text+0x137f): undefined reference to `raytrzuAd6RComi0WmBiuT4685WWH_Types_zdfBinaryColor_closure'
Run Code Online (Sandbox Code Playgroud)

完整的错误列表可以在这里找到 产生此错误的代码可以在这里找到.

我使用的是ghc 7.10.1和cabal 1.22.4.0.

我的问题的第二部分是,尽管遵循与此问题相同的cabal结构,尽管可执行文件和库都具有唯一的hs-source-dir并且取决于库,但cabal仍然会为每个cabal构建重新编译库3次.

编辑:就三重编译而言,它是第一次构建.o文件[ 2 of 15] Compiling Types ( src/Types.hs, dist/build/Types.o ).第二次构建由TemplateHaskell和profiling引起的.p_o文件[ 2 of 15] Compiling Types ( src/Types.hs, dist/build/Types.p_o ).

Ant*_*sky 6

您应该在other-modules字段中的Cabal文件中包含所有其他未导出的模块,否则在生成最终库或可执行文件时,它们将无法正确链接.

您可以查看Cabal用户指南以获取更多信息(尽管这几乎总结了这种情况other-modules!).