【问题标题】:Is it possible to use GCC without Cygwin or MinGW?是否可以在没有 Cygwin 或 MinGW 的情况下使用 GCC?
【发布时间】:2010-11-10 08:46:30
【问题描述】:

GCC 是一个非常受人尊敬的多语言编译器(据我所知)。我无法确定的一件事是:是否可以在 Windows 上使用 GCCCygwinMinGW 这样的额外内容?

我了解到,如果您在 Cygwin 上使用 GCC,则会依赖于 DLL。如果您将 GCC 与 MinGW 一起使用,则可以消除这种依赖关系,但您仍然必须拥有 MinGW 才能使用 GCC。

是否可以构建 GCC 并自行使用它,完全原生于 Windows?像微软的编译器?看完之后,我的猜测是没有的。但如果可能的话,我仍然想要更多信息。

如果不是,为什么 GCC 需要 Cygwin 或 MinGW 之类的环境? 我现在明白了。这是因为 GCC 需要 Unix/POSIX 环境。 为什么确实如此,但我仍然无法理解。

我确实找到了这个,它有帮助,但并没有真的回答我的问题:Why does GCC-Windows depend on cygwin?

为了完善我的问题,我猜我在尝试什么来理解为什么 GCC 不能独立存在——我只有“GCC.exe”。

【问题讨论】:

  • 答案是意识形态的,弗兰克。就个人而言,我很高兴看到不依赖 Posix 的 Windows 的 gcc。
  • 还有一点需要注意,当你发布一个使用 MSVC 构建的程序时,你仍然必须包含可再发布的库。使用 MinGW,您可以重新分发 mingwm10.dll。
  • @Mark 不,你没有。例如,我用 MinGW 编译的 CSVfix 工具只依赖于 MSVCRT.DLL,就像任何其他 Windows C/C++ 应用程序一样。
  • 另外,如果您静态链接它们,则不必在 MSVC 中包含可再发行库。

标签: windows gcc


【解决方案1】:

只需在您的计算机上安装 wsl。

【讨论】:

    【解决方案2】:

    Linaro 很久以前就提供了一个 GCC,它可以在没有 MinGW 或 Cygwin 的 Windows 上天真地运行。我目前在 Windows 10 PC 上使用该 GCC 4.9 来编译 UEFI,它的工作原理非常有魅力。

    https://releases.linaro.org/archive/14.09/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.9-2014.09_win32.zip

    【讨论】:

      【解决方案3】:

      要禁用mingw的额外依赖,根本不使用异常(-fno-exceptions),我没用过cygwin所以不确定。

      【讨论】:

        【解决方案4】:

        mingw 到底有什么问题?什么是原生的?

        mingw 用于生成相当多的独立二进制文件,而且可能比 MSVC 更原生,后者需要 msvcrt,有时需要安装一个组件。

        所以也许你可以解释一下你对 mingw 的尝试,以及确切的问题是什么。

        【讨论】:

          【解决方案5】:

          对于MinGW,你需要MinGW,因为MinGW提供了gcc语言系统的实现。我不明白你的问题有什么意义——就像“我可以在不安装 VC++ 的情况下使用 VC++ 吗?”

          澄清一下: MinGW 是 GCC 编译器可执行文件、标头和支持对象。没有别的了。有一个相关但独立的包称为 MSYS,它提供了一些 posix 实用程序,但您不需要以任何方式使用 GCC 的 MinGW 版本。

          【讨论】:

          • 我可以在不安装 IDE 的情况下使用编译器。我只需要编译可执行文件以及任何相关的标头和支持对象。我不是编译器专家;我不声称是。但是,我觉得我的问题仍然存在并且是有道理的。也许您需要从一些假设的知识中抽象出来——您的知识可能就是我所缺少的。
          • 你是不是想说 MinGW 基本上是我要问的?它是 GCC 的一个版本,可以最接近我的要求吗?
          • 弗兰克:是的。至少在很大程度上,如果您正确理解了您的问题。不过,Afaik mingw 也在搞乱驱动器映射方案。
          • 我一直在导师的指导下使用 Cygwin(硕士课程)。下课后我可以切换到MinGW。另外,很抱歉删除我的评论并重新发布。我发现了一个错字,我不确定这个错字是否干扰了理解。所以我换了。
          • @Marco NOOOOO!那是MSYS。 MinGW 只是编译器和支持的东西 - 它绝不提供 posix 环境,也绝不会与驱动器映射混淆。
          【解决方案6】:

          我不这么认为。过去我不得不为人们编译一些命令行应用程序,并且总是不得不使用 cygwin。

          我认为最大的原因是 posix 兼容性,这是 cygwin 努力为 Win32 带来的。

          【讨论】:

          • mingw 越来越好了。我经常用它编译 gdb 和 binutils(出于交叉目的)。
          猜你喜欢
          • 2019-03-31
          • 1970-01-01
          • 2014-06-16
          • 2020-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多