用 cygwin 编译的 C++ 代码需要 cygwin1.dll 到 运行

C++ code compiled with cygwin needs cygwin1.dll to run

我没有特别的代码可以分享来问这个,但是我写了一个 C++ 代码(甚至可以是一个简单的 Hello World 程序)编译成一个 exe 文件,需要cygwin1.dll 可通过 %path% 或在与 运行 的 exe 相同的文件夹中获得(运行 时间)。

如果需要 libstdc++-6.dll,我可以做一些事情,比如使用标签 -static-static-libstdc++。但是,我该怎么做才能不依赖 cygwin1.dll 文件来执行 exe 呢?我应该改用其他编译器吗?

Ps:如果有意义的话,我期待一些类似于此的解决方案。 MinGW .exe requires a few gcc dll's regardless of the code?

此外,我不想创建或使用单独的安装程序将 dll 添加到适合我的案例的正确位置。

正如评论中所讨论的,Cygwin 中的原生 gcc 以 Cygwin 为目标。您希望针对 mingw32 的 GCC 而不是针对 Cygwin 的 GCC。虽然您可以将该 GCC 安装在 Cygwin 中作为交叉编译器,但来自 MSYS 的本机 GCC 工作得很好,我也推荐这样做。

请注意,如果您需要 MINGW 中不可用的库,从 Cygwin 中提取库基本上是行不通的。认为这是一条强硬的路线:永远不要将 Cygwin 依赖的 dll 与 non-Cygwin 依赖的 dll 混合。将 Cygwin 视为可直接从 Win32 而不是 Win32 库启动的子系统。

MINGW 已经有一段时间了;但是很多时候端口不起作用。如果 pthread-using 程序调用 fork(),它将不起作用。这就是你需要 Cygwin 的时候了。