我在 Windows 上有 cygwin,通过它运行 gcc。但是创建.exe文件后,如果我在其他没有cygwin的计算机上运行它们,它会说找不到cygwin1.dll。有没有办法编译它们以便它们在任何系统上运行?
在您的情况下,也尝试复制cygwin1.dll(但它也可能依赖于其他DLL)(当然,您必须遵守Cygwin的许可证关于分发cygwin1.dll)
在 cygwin 中,您始终可以使用以下命令检查所需的模块:
objdump -p a.exe | grep 'DLL Name'
或
cygcheck ./a.exe
或者对于一般的 Windows,使用类似以下工具:Dependency Walker
您需要针对 MinGW(最小 GNU Win32)模式进行编译。您可以通过安装 mingw 来代替(或附加)cygwin,或者将 --mno-cygwin 编译器选项传递给 cygwin gcc 来实现此目的。
您可以尝试使用命令行选项进行编译
-mno-cygwin
。
请参阅 Cygwin 常见问题解答。
来自 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”(Minimalist GNU for Windows)混淆,后者是完全独立的工作。
对于新版本的 GCC,您应该按以下方式操作
要编译 32 位 Windows,请使用 GCC 和 -host=i686-w64-mingw32
要编译 64 位 Windows,请使用 GCC 和 -host=x86_64-w64-mingw32