使用gcc编译(windows上为cygwin)

问题描述 投票:0回答:6

我在 Windows 上有 cygwin,通过它运行 gcc。但是创建.exe文件后,如果我在其他没有cygwin的计算机上运行它们,它会说找不到cygwin1.dll。有没有办法编译它们以便它们在任何系统上运行?

gcc cygwin
6个回答
12
投票

在您的情况下,也尝试复制cygwin1.dll(但它也可能依赖于其他DLL)(当然,您必须遵守Cygwin的许可证关于分发cygwin1.dll)
在 cygwin 中,您始终可以使用以下命令检查所需的模块:

objdump -p a.exe | grep 'DLL Name'

cygcheck ./a.exe

或者对于一般的 Windows,使用类似以下工具:Dependency Walker


12
投票

您需要针对 MinGW(最小 GNU Win32)模式进行编译。您可以通过安装 mingw 来代替(或附加)cygwin,或者将 --mno-cygwin 编译器选项传递给 cygwin gcc 来实现此目的。


4
投票

您可以尝试使用命令行选项进行编译

-mno-cygwin


1
投票

0
投票

来自 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)混淆,后者是完全独立的工作。


0
投票

对于新版本的 GCC,您应该按以下方式操作

要编译 32 位 Windows,请使用 GCC 和 -host=i686-w64-mingw32
要编译 64 位 Windows,请使用 GCC 和 -host=x86_64-w64-mingw32

© www.soinside.com 2019 - 2024. All rights reserved.