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