Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建一个程序,使其不会';不需要DLL_Dll_Compiler Construction_Haskell_Linker_Static Linking - Fatal编程技术网

如何构建一个程序,使其不会';不需要DLL

如何构建一个程序,使其不会';不需要DLL,dll,compiler-construction,haskell,linker,static-linking,Dll,Compiler Construction,Haskell,Linker,Static Linking,如何编译(Haskell)程序,使其不需要DLL 我编写了一个使用GLUT并需要glut32.dll的程序。我用ghc--makeprogram.hs编译了它。现在我想发布我的程序,但我不希望它需要任何DLL(所以我可以只给用户.exe)。我试着用ghc-static--make program.hs编译,但没有成功,我仍然得到“用户错误(未知GLUT条目glutInit)” 我如何才能做到这一点?只有当GLUT提供了库的静态版本时才有可能做到这一点(它可以被命名为类似于glut32s.lib的

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

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


我如何才能做到这一点?

只有当GLUT提供了库的静态版本时才有可能做到这一点(它可以被命名为类似于
glut32s.lib的东西,但不要求他们特别称它为任何东西)


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

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

 ghc -O2 --make -static -optc-static -optl-static A.hs -fvia-C
这确保了Haskell组件和C组件都将通过C工具链进行静态链接。

另请参见