2010-12-05 99 views
6

如何編譯一個(Haskell)程序以便它不需要DLL?如何構建一個程序以便它不需要DLL

我寫了一個使用GLUT的程序,需要glut32.dll。我用ghc --make program.hs編譯它。現在我想分發我的程序,但我不希望它需要任何DLL(所以我可以給用戶提供.exe)。我嘗試編譯與ghc -static --make program.hs,但它沒有工作,我仍然得到「用戶錯誤(未知的GLUT條目glutInit)」。

我該怎麼做?

+0

參見http://stackoverflow.com/questions/5953199/create-a-static-haskell-linux-executable – 2011-05-12 03:06:31

回答

3

這是唯一可能的,如果GLUT提供了庫的靜態版本(這可能被命名爲glut32s.lib,但沒有要求他們稱之爲特別的東西)。

這種方法的成功與否還取決於GHC是否允許連接外部靜態庫。 ghc的手冊頁指示-static僅適用於Haskell庫,而不適用於其他外部庫。

2

假設你有需要的C庫的靜態版本,您可以創建一個靜態哈斯克爾可執行文件:

ghc -O2 --make -static -optc-static -optl-static A.hs -fvia-C 

這種方式確保了Haskell的成分,和C組件將靜態鏈接,通過C工具鏈。

相關問題