Pregunta

He instalado Haskell a través de la pre construida v6.8.2 instalador.

Al intentar compilar este archivo de ejemplo con GHC

module Main where
import Text.ParserCombinators.Parsec
import System.Environment

main :: IO ()
main = do args <- getArgs
          putStrLn ("Hello")

Me sale el siguiente error:

D:\src\Haskell>ghc -o read read.hs
ghc -o read read.hs
read.o(.text+0x1b5):fake: undefined reference to   `__stginit_parseczm2zi1zi0zi0_TextziParserCombinatorsziParsec_'
collect2: ld returned 1 exit status

He instalado Parsec a través de Cabal.

¿Alguien tiene alguna idea de que lo que está mal?

¿Fue útil?

Solución

Trate ghc --make -o read read.hs. GHC se hará cargo de las dependencias del enlazador.

Otros consejos

Voy a poner a cabo una otra manera de hacer este trabajo

ghc -package parsec -o read read.hs

A partir de la documentación GHC

-package P

This option causes the installed package P to be exposed. The package P can be 
specified in full with its version number (e.g. network-1.0) or the version number 
can be omitted if there is only one version of the package installed. If there are 
multiple versions of P installed, then all other versions will become hidden.

The -package P option also causes package P to be linked into the resulting 
executable or shared object. Whether a packages' library is linked statically or 
dynamically is controlled by the flag pair -static/-dynamic.

http://www.haskell.org/ GHC / docs / tarde / html / users_guide / Packages.html

Según los docs Parsec (sección 1.2. 1 Compilar con GHC), usted debe hacer esto:

  

Cuando su vinculación de los archivos juntos,   Usted necesita decir GHC donde puede encontrar   bibliotecas (-L) y para enlazar con la   Parsec biblioteca también (-l):
     ghc -o myprogram myfile1.o myfile2.o -Lc:\parsec -lparsec

Esta documentación sobre el compilador de Haskell puede ayudar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top