GHC链接器错误(堆栈)

时间:2015-10-22 11:08:44

标签: haskell linker ghc haskell-stack

我在Haskell中有点像初学者,我尝试stack来构建应用程序。

但是,Linking .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/sim-exe/sim-exe ... [...]/.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/libHSsim-0.1.0.0-EmdGqYS9bXF9VefempSPEG.a(Lib.o):(.text+0x98f5): undefined reference to `simzuEmdGqYS9bXF9VefempSPEG_Linter_lint_info' [...]/.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/libHSsim-0.1.0.0-EmdGqYS9bXF9VefempSPEG.a(Lib.o):(.data+0x5f0): undefined reference to `simzuEmdGqYS9bXF9VefempSPEG_Linter_lint_closure' collect2: error: ld returned 1 exit status 在执行时给出了链接器错误:

lint :: String -> [LintError]
lint source = let
  handleParseError :: ParseError -> [LintError]
  handleParseError e = [LintError (fromSourcePos $ errorPos e) $ format e]
  in
    case parseSim source of
      (Left error) -> handleParseError error
      (Right prog) -> lintProgram prog

查看标签告诉我它与此函数中的闭包有关:

lint

但那里真的没有关闭?如果我用{/ 1>替换lint _ = [] 的实现

stack ghci

编译得很好。

我可以执行lint并完全使用完整的{{1}}实现。为什么它无法链接?

1 个答案:

答案 0 :(得分:8)

正如yuras正确指出的那样,在cabal文件中添加exposed-modules下的模块可以解决问题。

相关问题