【问题标题】:Cygwin: How to actually use gcc-mingwCygwin:如何实际使用 gcc-mingw
【发布时间】:2011-04-16 02:55:08
【问题描述】:

由于“gcc -mno-cygwin”不再起作用,我一直在寻找一种方法来在我的 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”,不是吗?

我用谷歌搜索,但找不到与该主题相关的任何内容...

【问题讨论】:

    标签: gcc cygwin mingw


    【解决方案1】:

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

    【讨论】:

    • 这确实有效。知道为什么他们在其中保留一个明显无功能的包“gcc-mingw”并将工作内容隐藏为“i686-w64-mingw32-gcc”吗?
    • 我认为 gcc-mingw 包是gcc-3 -mno-cygwin 功能的一部分。它们实际上不包含任何东西,除了创建我猜需要的链接的安装后脚本。这些有趣的名字遵循交叉编译器通常的目标三元组模式:cpu-vendor-os,vendor==w64(用于 MinGW-w64)和 os==mingw32(出于历史原因)。
    • 请注意,至少截至 12 年 6 月,安装工具链后从 Cygwin 运行 MinGW 编译器的字符串只是 mingw-gcc。这解决了commentspost below 中提出的问题。
    • 请注意您使用的 mingw-toolchain。 “真正的”mingw32 是基于 win32 的(“mingw-gcc”可能来自那里,而不是来自 cygwin 帮派)并使用 Windows 路径,例如因此,它们与 cygwin 本机版本有些不兼容(生成具有不同路径符号等的 .d 文件)。基于cygwin的gcc4交叉编译器是答案中提到的两个之一。
    【解决方案2】:

    进一步搜索发现the MinGW-targeted cross-compiler is not ready yet,并且必须使用带有 -mno-cygwin 的 GCC v3,或者手动安装交叉编译器(参见上面的链接)...

    【讨论】:

      【解决方案3】:

      Cygwin homepage 表示“单独的包,如 bash、gcc、less 等是独立于 DLL 发布的。”。

      Here你可以在cygwin下找到gcc的安装方法,所以你在安装的时候也要选择gcc包,不光是gcc-mingw。

      【讨论】:

      • 我已经安装了(其中包括)gcc、gcc4 和 gcc-mingw。我的问题是如何真正达到以 MinGW 为目标的 GCC。 “gcc”显然不这样做,“gcc -mno-cygwin”也没有,而且没有“gcc-mingw”这样的东西。
      • 我发现它并不像我最初想象的那么简单。在这里 (cygwin.com/ml/cygwin/2009-10/msg00061.html) 我找到了一个可能的解决方案。
      • 我还发现了这个自己动手的解决方案:sourceforge.net/apps/trac/mingw-w64/wiki/…
      【解决方案4】:

      在为 Cygwin (mingw64-x86_64-gcc-g++) 安装完 MingW g++ 包后,我还苦苦思索如何调用它。

      感谢this wiki,我发现命令是x86_64-w64-mingw32-g++。然后我做了alias g++='x86_64-w64-mingw32-g++'g++ 开始按预期工作。

      【讨论】:

        猜你喜欢
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 2010-11-10
        相关资源
        最近更新 更多