Haskell Parsec Compilation Error

I installed Haskell through the pre-installed installer v6.8.2.

When trying to compile this sample file using GHC

module Main where import Text.ParserCombinators.Parsec import System.Environment main :: IO () main = do args <- getArgs putStrLn ("Hello") 

I get the following 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 

I installed Parsec via cabal.

Does anyone know what is wrong?

+6
windows haskell parsec
source share
3 answers

Try ghc --make -o read read.hs GHC will take care of the linker dependencies.

+9
source share

I will do another way to make this work

 ghc -package parsec -o read read.hs 

From ghc documentation

 -package P This option causes the installed package P to be exposed. The package P can be specified in full with its version number (eg 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. 

see http://www.haskell.org/ghc/docs/latest/html/users_guide/packages.html

+2
source share

According to the Parsec docs (section 1.2.1 Compiling with GHC), you should do this:

When you link the files together, you need to tell the GHC where it can find the libraries (-L) and to communicate with the Parsec library too (-l):
ghc -o myprogram myfile1.o myfile2.o -Lc:\parsec -lparsec

This documentation in the Haskell compiler can help.

+1
source share

All Articles