2015-10-22 17 views
8

私は幾分Haskellの初心者ですが、私はアプリケーションを構築するためにstackを試しています。GHCリンカエラー(スタック)

実行するときしかし、stack buildは私にリンカエラーを与える:ラベルを見て

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 _ = [] 

lintの実装を交換する場合には、罰金コンパイルします。

私はstack ghciを実行して、lintの実装で十分です。なぜそれはリンクに失敗するのですか?

+6

恐らくモジュールはカバールファイルに含まれていませんか? – Yuras

+1

@Yuras、それはそうだった...私はモジュールを 'exposed-modules'の下に追加しました。今は動作しています。ありがとう – DeX3

+2

@ DeX3答えとしてそれを書いて受け入れてください。 –

答えて

7

yurasが正しく指摘されているので、cabalファイルのexposed-modulesにあるモジュールを追加すると問題が解決されます。