Вопрос

Я установил Haskell через готовый установщик версии 6.8.2.

При попытке скомпилировать этот пример файла с помощью GHC

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

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

Я получаю следующую ошибку:

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

Я установил Parsec через cabal.

У кого-нибудь есть какие-нибудь идеи относительно того, что не так?

Это было полезно?

Решение

Пытаться ghc --make -o read read.hs.GHC позаботится о зависимостях компоновщика.

Другие советы

Я расскажу еще один способ заставить это работать

ghc -package parsec -o read read.hs

Из документации 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/latest/html/users_guide/packages.html

Согласно документы Parsec (раздел 1.2.1 Компиляция с помощью GHC), вы должны сделать это:

Когда вы связываете файлы вместе, вам нужно сообщить GHC, где он может найти библиотеки (-L) и также связать с библиотекой Parsec (-l):
ghc -o myprogram myfile1.o myfile2.o -Lc:\parsec -lparsec

Эта документация может помочь компилятор Haskell.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top