2013-09-05 52 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:LD返回1個退出狀態

至於我可以看到這是因爲沒有main函數,但我不希望一個這個模塊中。我使用的是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