【问题标题】:C/C++ compilers (Windows)C/C++ 编译器 (Windows)
【发布时间】:2013-12-29 03:26:35
【问题描述】:

我不太了解以下 C/C++ 编译器之间的区别:GCC、MinGW、Cygwin 和 MSVC。 GCC 的 MinGW 和 Cygwin 实现还是完全不同的?如果我打算为 Windows 编译,除了 MSVC (Visual Studio) 编译器之外,我还需要什么吗?

【问题讨论】:

  • cygwin 不是编译器,它是一组在 Windows 中创建类 Linux 环境的库,以及使用这些库编译的常用 linux 工具。有一个 gcc 到 cygwin 的端口。

标签: visual-c++ gcc compiler-construction cygwin mingw


【解决方案1】:

GCC for Windows 主要用于生成文件和使用 gcc 特定的非可移植语法编写的代码。

cygwin 不是编译器,它是一组在 Windows 中创建类似 Linux 的环境的库,以及使用这些库编译的常用 linux 工具。它对于使用 Unixisms 编写的代码很有用(期望文件以某种方式运行,或者假设目录分隔符是/,或者假设Linux路径)。

如果您有纯 Windows 代码,那么您会最喜欢使用 Visual C++ (MSVC)。或者,如果优化不够好,请使用英特尔 C++ 编译器。

Visual C++ 也适用于符合 ISO 标准的可移植代码……但微软在实现 C++11 和 C++14 特性方面稍有落后。所以这是您可能想要使用 gcc(或 clang)的另一个原因。

【讨论】:

  • 英特尔有很多编译器套件,所以我必须熟悉每一个。所以 Intel 编译器对 AMD 和 32/64 等所有架构都有好处?
  • 我现在才注意到它们既不是免费的也不是开源的。
  • @user1338113:不,英特尔编译器不是免费的。它们适用于需要金钱可以买到的最佳性能的专业程序员。他们生成的代码也将在 AMD 上运行,但性能针对 Intel 处理器进行了调整。
  • -mwindows-mno-windows 不要指定 Cygwin/without-Cygwin。这些选项分别指定生成的程序是 Windows GUI 或 Windows 控制台程序。如果您的目标是 Cygwin 平台,那么您需要一个针对 Cygwin 的 gcc 编译器。如果您的目标是本机 Win32 平台程序,那么您需要一个针对 mingw32(即 Win32)的 gcc 编译器。使用不同的运行时。 Cygwin GCC 编译器过去能够以原生 Win32 为目标,但很久以前,这种支持被放弃了,因为浪费精力。
  • @MichaelBurr:哦,我明白了我的意思是-mno-cygwin,它已经停产了。你确定能力完全消失了吗?我想仍然可以使用交叉编译器(使用与在 Linux 上构建 mingw-runtime 应用程序相同的交叉编译逻辑)。
猜你喜欢
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
相关资源
最近更新 更多