用Cygwin编译独立的exe

Leo*_*zen 7 dll executable cygwin exe

我想用cygwin制作一个独立的exe.我有两个选择:

  1. 静态链接cygwin1.dll
    如果我可以静态链接cygwin1.dll,那么我可以得到一个独立的exe.

  2. 将cygwin1.dll与myprog.exe合并
    如果我可以将cygwin1.dll与我的程序合并,我可以得到一个独立的exe.

不建议我使用IlMerge.这不起作用,因为我没有使用.NET编译我的程序.

这些选项中是否有可能?如果没有,这种困境有可能发生什么吗?感谢名单!

Jer*_*fin 3

我可以看到两种您可能认为合理的可能性。一种方法是使用不同的编译器(例如,MinGW,无论如何,只是这样它不需要 cygwin)构建一个存根可执行文件,以将主可执行文件和 cygwin.dll 解压到临时目录中,然后生成该可执行文件。要仅分发单个可执行文件,您需要将主可执行文件和 cygwin.dll 添加到“存根”作为二进制资源。它有点丑陋,但非常简单。

另一种方法是获取cygwin 的源代码,并将其构建为静态库。至少从理论上来说,这应该更干净——但无疑也需要更多工作。将其构建为纯静态代码而不是 DLL 几乎肯定需要做一些工作,尽管很难猜测需要做多少工作。只需浏览一下,这似乎不太可能是几个小时或类似的快速工作(当然,除非我错过了一些已经支持静态构建的东西)。