2013-09-05 2 views
1

Я действительно стараюсь делать то, что должно быть очень простой в GHC: у меня есть программа, которая работает и компилируется отлично, но когда я ее разделяю так, чтобы часть кода находилась в отдельном модуле Я не могу заставить его работать. Отдельный модуль называется FICutilitiesКомпиляция отдельных модулей в GHC

GHC -o FICutilities FICutilities.hs C: \ GHC \ GHC-6.10.1/libHSrts.a (main.o):. Main.c :(текст + 0x7) : неопределенная ссылка на __stginit_ZCMain' C:\ghc\ghc-6.10.1/libHSrts.a(Main.o):Main.c:(.text+0x36): undefined reference to ZCMain_main_closure» collect2: л.д. возвращается статус 1 выхода

насколько я могу видеть, это происходит потому, что нет основной функции, но я не хочу один в этом модуле. Я использую версию 6.10.1, потому что я не могу получить более свежие работы.

Пожалуйста, кто-нибудь может помочь ?! Спасибо, Клэр.

+2

Вы не должны использовать GHC 6.10, многие библиотеки не будут работать с ним afaik – bennofs

ответ

2

Просто добавьте -c выключатель.

Однако вы не должны самостоятельно строить модули: рекомендуемый способ построения - использовать Cabal.

Другие способы являются:

  1. ghc --make Main.hs строит основной и его зависимости перекомпиляции по мере необходимости.
  2. ghc -M Main.hs рекурсивно анализирует импорт и создает файл makefile с зависимостями, чтобы вы могли использовать эту информацию в своей системе сборки.

Ни http://www.haskell.org/ghc/docs/latest/html/users_guide/modes.html, ни http://www.haskell.org/ghc/docs/latest/html/users_guide/modes.html#make-mode говорят --make осуждается. Не рекомендуется, если Cabal является жизнеспособным вариантом. Большой проект - это боль, которую нужно поддерживать без Cabal. В некоторых инструментах инструментария Haskell есть плагины для Cabal (например, препроцессор грамматики атрибутов UUAGC и другие).

+2

В этом учебнике рассказывается, как использовать Cabal. http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_program – mhwombat

+0

Мне сказали, что флаг -make устарел и может быть удален. Это правда? – kqr

+0

Отредактирован мой ответ – nponeccop

Смежные вопросы