如何编译(Haskell)程序以使其不需要DLL?
我编写了一个使用GLUT并需要glut32.dll的程序。我用ghc --make program.hs
编译了它。现在我想分发我的程序,但我不希望它需要任何DLL(因此我可以将.exe提供给用户)。我尝试使用ghc -static --make program.hs
进行编译但是它没有用,我仍然得到“用户错误(未知的GLUT条目glutInit)”。
我该怎么做?
答案 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工具链静态链接。