6

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

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

我怎样才能做到这一点?

4

2 回答 2

3

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

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

于 2010-12-05T20:49:48.117 回答
2

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

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

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

于 2011-05-12T03:07:27.737 回答