【问题标题】:How to build a program so that it doesn't require DLLs如何构建一个不需要 DLL 的程序
【发布时间】:2011-05-20 15:30:57
【问题描述】:

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

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

我该怎么做?

【问题讨论】:

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


【解决方案1】:

这只有在 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 工具链静态链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 2021-12-30
      • 1970-01-01
      相关资源
      最近更新 更多