2015-10-22 16 views
8

Ich bin ein wenig Anfänger in Haskell und ich versuche stack, um eine Anwendung zu erstellen.GHC Linker Fehler (Stack)

jedoch stack build gibt mir Fehler Linker wenn sie ausgeführt werden:

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 

auf den Etiketten der Suche mir sagt es zu einem Verschluss in dieser Funktion in engem Zusammenhang steht:

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 

Aber es ist nicht wirklich ein Verschluss Dort? Wenn ich die Implementierung von lint mit

lint _ = [] 

ersetzen kompiliert es in Ordnung.

Ich kann stack ghci ausführen und spielen mit der vollen lint Implementierung gut. Warum kann es nicht verlinkt werden?

+6

Wahrscheinlich ist das Modul nicht in der Cabal-Datei enthalten? – Yuras

+1

@Yuras yep, das war es ... Ich habe das Modul unter exposed-modules hinzugefügt und es funktioniert jetzt - ich wusste einfach nicht, dass ich das tun musste. Danke – DeX3

+2

@ DeX3 Könntest du das bitte als Antwort schreiben und akzeptieren? –

Antwort

7

Wie Sie richtig hingewiesen haben, behebt das Hinzufügen des Moduls unter exposed-modules in der Cabal-Datei das Problem.