在GHC中编译单独的模块

时间:2013-09-05 11:24:07

标签: haskell ghc

我真的很难在GHC中做一个非常简单的事情:我有一个可以正常工作和编译的程序,但当我拆分它以便部分代码在一个单独的模块中时我无法得到它工作。单独的模块称为FICutilities

  

ghc -o FICutilities FICutilities.hs   C:\ ghc \ ghc-6.10.1 / libHSrts.a(Main.o):Main.c :(。text + 0x7):未定义引用   __stginit_ZCMain' C:\ghc\ghc-6.10.1/libHSrts.a(Main.o):Main.c:(.text+0x36): undefined reference to ZCMain_main_closure”   collect2:ld返回1退出状态

据我所知,这是因为没有主要功能,但我不想在这个模块中使用。我使用的是版本6.10.1,因为我无法获得更新的版本。

请有人帮忙吗?!谢谢,克莱尔。

1 个答案:

答案 0 :(得分:3)

只需添加-c开关。

但是,您不应该自己构建模块:推荐的构建方法是使用Cabal。

其他方式是:

  1. ghc --make Main.hs根据需要构建main及其依赖项重新编译。
  2. ghc -M Main.hs以递归方式解析导入并生成带有依赖项的makefile,以便您可以在构建系统中使用此信息。
  3. http://www.haskell.org/ghc/docs/latest/html/users_guide/modes.htmlhttp://www.haskell.org/ghc/docs/latest/html/users_guide/modes.html#make-mode都不推荐使用--make。如果Cabal是一个可行的选择,不建议使用。一个大项目是没有Cabal的维护。 Haskell工具链中的一些工具具有Cabal插件(例如UUAGC属性语法预处理器和其他工具)。