使用gcc(在Windows上的cygwin环境下)进行编译

8

我在Windows上使用Cygwin运行gcc。但是,在创建完.exe文件后,如果我在其他没有安装Cygwin的计算机上运行它们,会提示找不到cygwin1.dll。是否有一种方法可以编译它们使其在任何系统上运行?

5个回答

12

您需要为MinGW(Minimal GNU Win32)模式编译。您可以通过安装mingw而不是(或除此之外)cygwin,或者通过向cygwin gcc传递--mno-cygwin编译器选项来实现。


但是我在我的程序中使用了fork函数。如果我使用-mno-cygwin,它会说fork未定义。 - avd
2
然后您将需要为您的用户提供cygwin1.dll。Windows本身不提供fork()系统调用。最好重写您的代码,不再使用fork。 - Martin v. Löwis

11

在您的情况下,请尝试复制cygwin1.dll(但这可能取决于其他DLL),当然,您必须遵守Cygwin有关分发cygwin1.dll的许可证条款


在Cygwin中,您始终可以使用以下命令检查所需的模块:

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

或者

cygcheck ./a.exe

或者对于Windows平台,可以使用类似于这种工具:Dependency Walker


如果我输入“cygcheck a.exe”,则会出现“错误:找不到a.exe”的提示。 - avd

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'(Windows的Minimalist GNU)不应混淆,后者是完全独立的努力。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接