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?
Wahrscheinlich ist das Modul nicht in der Cabal-Datei enthalten? – Yuras
@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
@ DeX3 Könntest du das bitte als Antwort schreiben und akzeptieren? –