Can';t编译haskell项目:链接步骤失败

Can';t编译haskell项目:链接步骤失败,haskell,ghc,cabal,osx-mavericks,Haskell,Ghc,Cabal,Osx Mavericks,我在做我的项目时遇到了问题。这个项目过去运行正常,我不完全确定是什么变化破坏了它。我认为这与(我正在使用的)之间的问题有关。[编辑:澄清一下,这在小牛身上曾经起过作用,因此这一假设可能不成立。]问题似乎在于链接步骤: In-place registering chorez-0.1.0.0... Preprocessing executable 'chorez' for chorez-0.1.0.0... Linking dist/build/chorez/chorez ... Undefined

我在做我的项目时遇到了问题。这个项目过去运行正常,我不完全确定是什么变化破坏了它。我认为这与(我正在使用的)之间的问题有关。[编辑:澄清一下,这在小牛身上曾经起过作用,因此这一假设可能不成立。]问题似乎在于链接步骤:

In-place registering chorez-0.1.0.0...
Preprocessing executable 'chorez' for chorez-0.1.0.0...
Linking dist/build/chorez/chorez ...
Undefined symbols for architecture x86_64:
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_AddResponse_con_info", referenced from:
      _s5X4_info in libHSchorez-0.1.0.0.a(Commands.o)
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_ErrorResponse_static_info", referenced from:
      _chorezzzm0zi1zi0zi0_ChorezzziCommands_route1_closure in libHSchorez-0.1.0.0.a(Commands.o)
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_parseRequest_closure", referenced from:
      _r7eV_srt in libHSchorez-0.1.0.0.a(Server.o)
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_parseRequest_info", referenced from:
      _s7nh_info in libHSchorez-0.1.0.0.a(Server.o)
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_zdfToJSONResponse1_closure", referenced from:
      _r7eS_closure in libHSchorez-0.1.0.0.a(Server.o)
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_zdfToJSONResponse4_closure", referenced from:
      _s7ng_info in libHSchorez-0.1.0.0.a(Server.o)
      _r7eQ_closure in libHSchorez-0.1.0.0.a(Server.o)
      _r7eV_srt in libHSchorez-0.1.0.0.a(Server.o)
  "_chorezzzm0zi1zi0zi0_ChorezzziRequest_zdfToJSONResponse5_closure", referenced from:
      _s7ng_info in libHSchorez-0.1.0.0.a(Server.o)
      _r7eV_srt in libHSchorez-0.1.0.0.a(Server.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

所有这些符号都来自我自己的项目(从名称判断)。我看到的大多数答案都与某个库没有正确链接有关。我怀疑其中一些符号是由deriveToJSONfrom生成的。我已经重新安装了好几次,但没有解决方案。有什么想法吗?

卸载并重新安装-不是GHC,而是Xcode。这为我解决了问题。

以下是最终解决问题的方法。我的阴谋集团是这样的:

library
  exposed-modules:
      My.Module1
    , My.Module3


executable my-executable
  main-is:             Main.hs
  build-depends:
      base >=4.6 && <4.7
    , chorez
库
公开模块:
模块1
,My.Module3
可执行文件我的可执行文件
main是:main.hs
构建取决于:

base>=4.6&&到派对有点晚,但您需要将未公开的模块放在
其他模块
部分

从:

包中包含的模块 对于库,
cabal init
在项目目录中查找类似Haskell模块的文件,并将所有模块添加到
暴露模块
字段。对于不构成软件包公共界面一部分的模块,您可以将这些模块移动到
其他模块
字段。无论哪种方式,都需要列出库中的所有模块


不。我卸载了XCode并重试。没用。然后我再次尝试重新安装ghc和cabal安装(以防新安装的构建工具会做得更好)。我刚才终于又查了一遍,结果也没用。这对我来说很有效。我有一个私有的附加模块,还有一个只导入公共模块的测试。这对我来说也很有效,但我同意这里似乎有一个更深层次的问题。您必须公开内部使用的所有模块是没有意义的…谢谢!我也有同样的错误,我不小心忘记在我的构建中包含一个模块。将它添加到我的
公开模块中
解决了它。