如何构建程序,以便它不需要DLL

时间:2010-12-05 20:32:47

标签: dll compiler-construction haskell linker static-linking

如何编译(Haskell)程序以使其不需要DLL?

我编写了一个使用GLUT并需要glut32.dll的程序。我用ghc --make program.hs编译了它。现在我想分发我的程序,但我不希望它需要任何DLL(因此我可以将.exe提供给用户)。我尝试使用ghc -static --make program.hs进行编译但是它没有用,我仍然得到“用户错误(未知的GLUT条目glutInit)”。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

这只有在GLUT提供库的静态版本时才有可能(这可以命名为glut32s.lib,但并不要求他们特别称它为任何东西。)

这种方法的成功还取决于GHC是否允许与外部静态库链接。 ghc的手册页指示-static仅适用于Haskell库,而不适用于其他外部库。

答案 1 :(得分:2)

假设您拥有所需C库的静态版本,您可以使用以下命令创建静态Haskell可执行文件:

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

确保Haskell组件和C组件通过C工具链静态链接。