2

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

ghc -o FICutilities FICutilities.hs C:\ghc\ghc-6.10.1/libHSrts.a(Main.o):Main.c:(.text+0x7): undefined reference to __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 版本,因为我无法获得更新的版本。

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

4

1 回答 1

3

只需添加-c开关。

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

其他方式有:

  1. ghc --make Main.hs构建 main 并根据需要重新编译其依赖项。
  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 say--make已被弃用。如果 Cabal 是一个可行的选择,则不建议这样做。如果没有 Cabal,一个大项目很难维护。Haskell 工具链中的一些工具具有 Cabal 插件(例如 UUAGC 属性语法预处理器等)。

于 2013-09-05T11:42:08.397 回答