使用 gcc 编译(Windows 上的 cygwin)
我在 Windows 上有 cygwin,通过它运行 gcc。但是创建.exe文件后,如果我在其他没有cygwin的计算机上运行它们,它会说找不到cygwin1.dll。有没有办法编译它们以便它们在任何系统上运行?
I have cygwin on windows through which I run gcc. But after creating .exe files, if I run them on other computers which dont have cygwin, it says cygwin1.dll not found. Is there a way to compile them so that they run on any system?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在你的情况下,尝试复制cygwin1.dll(但它也可能依赖于其他DLL)(当然你必须遵守Cygwin的关于分发 cygwin1.dll 的许可证)
在 cygwin 中,您始终可以使用以下命令检查所需的模块:
或者
对于一般 Windows,使用类似以下工具: Dependency Walker< /a>
In your case, try to copy cygwin1.dll as well (but it could depend on other DLLs as well) (of course you must comply with Cygwin's license with regards to distributing cygwin1.dll)
In cygwin, you can always check the needed modules using:
OR
or for windows in general, use something like this tool: Dependency Walker
您需要针对 MinGW(最小 GNU Win32)模式进行编译。您可以通过安装 mingw 来代替(或除了)cygwin,或者通过传递 --mno-cygwin 来实现这一点cygwin gcc 的编译器选项。
You need to compile for MinGW (Minimal GNU Win32) mode. You do that by either installing mingw instead of (or in addition to) cygwin, or by passing the --mno-cygwin compiler option to the cygwin gcc.
您可以尝试使用命令行选项
-mno-cygwin
进行编译。You can try compiling with the command line option
-mno-cygwin
.请参阅 Cygwin 常见问题解答。
See the Cygwin FAQ.
来自 http://cygwin.com/faq/faq.html# faq.programming.win32-no-cygwin
如何编译不使用 Cygwin 的 Win32 可执行文件?
mingw-gcc、mingw64-i686-gcc 和 mingw64-x86_64-gcc 软件包提供的编译器链接到标准 Microsoft DLL,而不是 Cygwin。这对于不需要 UNIX 模拟层的本机 Windows 程序来说是理想的。
不要将其与“MinGW”(适用于 Windows 的 Minimalist GNU)混淆,后者是一项完全独立的工作。
From http://cygwin.com/faq/faq.html#faq.programming.win32-no-cygwin
How do I compile a Win32 executable that doesn't use Cygwin?
The compilers provided by the mingw-gcc, mingw64-i686-gcc, and mingw64-x86_64-gcc packages link against standard Microsoft DLLs instead of Cygwin. This is desirable for native Windows programs that don't need a UNIX emulation layer.
This is not to be confused with 'MinGW' (Minimalist GNU for Windows), which is a completely separate effort.