Cygwin:如何实际使用gcc mingw

Cygwin:如何实际使用gcc mingw,gcc,cygwin,mingw,Gcc,Cygwin,Mingw,由于“gcc-mnocygwin”不再起作用,我一直在寻找一种在我的cygwin环境中运行以MinGW为目标的gcc的方法。(此时运行MSYS环境不是一个选项。) Cygwin安装程序提供了一个包“gcc mingw”,其中包括: lib/gcc/i686-pc-mingw32/3.4.4/cc1.exe lib/gcc/i686-pc-mingw32/3.4.4/collect2.exe lib/gcc/i686-pc-mingw32/3.4.4/crtbegin.o lib/gcc/i686

由于“gcc-mnocygwin”不再起作用,我一直在寻找一种在我的cygwin环境中运行以MinGW为目标的gcc的方法。(此时运行MSYS环境不是一个选项。)

Cygwin安装程序提供了一个包“gcc mingw”,其中包括:

lib/gcc/i686-pc-mingw32/3.4.4/cc1.exe
lib/gcc/i686-pc-mingw32/3.4.4/collect2.exe
lib/gcc/i686-pc-mingw32/3.4.4/crtbegin.o
lib/gcc/i686-pc-mingw32/3.4.4/crtend.o
缺少的是“gcc”前端。那么,我实际上如何调用这个编译器呢?我希望我不必手动通过“cc1”,对吗

我在谷歌上搜索了一下,但找不到任何与此相关的内容……

说“bash、gcc、less等单独的包是独立于DLL发布的。”


您可以找到如何在cygwin下安装gcc,因此您还应该在安装过程中选择gcc包,而不仅仅是gcc mingw。

进一步的搜索显示,您必须将gcc v3与-mno cygwin一起使用,或者手动安装交叉编译器(请参见上面的链接)…

正如您已经找到的那样,您可以将gcc-3与
-mno cygwin
一起使用。另一种可能是安装MinGW-w64项目中的32位和/或64位工具链,该工具链最近已为Cygwin打包,因此现在可以通过setup.exe获得。不要被相当混乱的可执行文件名所吓倒:
i686-w64-mingw32-gcc
是32位编译器,
x86\u 64-w64-mingw32-gcc
是64位编译器。

在为Cygwin安装了MingW g++包(
mingw64-x86\u 64-gcc-g++
)之后,我也很难找到如何调用它的方法


多亏了,我发现命令是
x86\u 64-w64-mingw32-g++
。然后我做了
别名g++='x86_64-w64-mingw32-g++'
并且
g++
开始按预期工作。

我已经安装了(除其他外)gcc、gcc4和gcc mingw。我的问题是如何真正达到MinGW目标。“gcc”显然不起作用,“gcc-mno cygwin”也不起作用,而且没有“gcc明格”这样的东西。我发现它并不像我最初想的那么简单。在这里()我找到了一个可能的解决方案。我还发现了这个自己动手的解决方案:这确实有效。你知道为什么他们会在那里保留一个显然不起作用的包“gcc-mingw”,并将工作内容隐藏为“i686-w64-mingw32-gcc”吗?我认为gcc-mingw包是
gcc-3-mno cygwin
功能的一部分。它们实际上不包含任何内容,除了创建链接的postinstall脚本,我想这是必要的。这些有趣的名称遵循了交叉编译器通常的目标三元组模式:cpu供应商os,供应商==w64(对于MinGW-w64)和os==mingw32(出于物理原因)。请注意,至少从2012年6月起,在安装工具链后从Cygwin运行MinGW编译器的字符串就是
MinGW gcc
。这解决了中由提出的问题。只需小心使用哪个mingw工具链。“真正的”mingw32是基于win32的(“mingw gcc”可能来自于此,而不是来自cygwin帮派),并且使用Windows路径,例如,它们与cygwin本机版本(生成具有不同路径符号的.d文件等)有些不兼容。基于cygwin的gcc4交叉编译器是答案中提到的两个编译器之一。