如何构建不需要 DLL 的程序

问题描述 投票:0回答:2

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

我编写了一个使用GLUT并需要glut32.dll的程序。我用

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

我该怎么做?

haskell dll linker static-linking
2个回答
3
投票

这只有在 GLUT 提供库的静态版本时才可能实现(可以将其命名为

glut32s.lib
之类的名称,但不要求他们特别称呼它)。

这种方法的成功还取决于 GHC 是否允许与外部静态库链接。

ghc
的手册页表明
-static
仅适用于 Haskell 库,不适用于其他外部库。


2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.