c++ - MinGW 作为可靠的 64 位 GCC 编译器

标签 c++ gcc cygwin mingw

我担心 64 位 MinGW 编译器作为 Visual C++ 编译器的替代品的可靠性。

例如,假设 C++ 代码在使用 GCC 4.6.2 的 Linux 下完美构建和运行,相应的 MinGW 是否会在 64 位 Windows 下生成类似可靠的可执行文件/库?

就可靠性而言,Cygwin 是否是更好的选择?既不是 Visual C++ 编译器?

最佳答案

首先是一些误解:

  1. MinGW(.org) 不提供其运行时的 64 位版本。除了他们的 32 位 CRT 之外,MinGW-w64 也是如此。他们还在致力于 ARM 支持。并支持各种额外的 API(Win32 和其他)。

  2. Cygwin <-> MinGW-w64:Cygwin 不使用 MS CRT (msvcrt.dll)。相反,它会在您的 Cygwin 应用程序和系统的操作系统库(kernel32.dll、ntdll.dll 等)之间插入一个 POSIX 兼容层,即 cygwin1.dll。

那么关于这个问题......

我发现 MinGW-w64 编译器非常好,GCC 4.6 及更高版本(实际上是 4.5.1 及更高版本)非常有能力为 Windows 生成良好的 64 位代码。请记住,MinGW 提供与 msvcrt.dll 本质上相同的 C API,因此请访问 msdn.com 获取文档(并务必查看“MSVC++ 2003”版本的文档,一些功能因较新的运行时而有所不同),不要认为因为它是 GCC,glibc 文档突然适用于 Windows。您的代码必须是跨平台的。另请注意 x64 Windows 上的 sizeof(long)!=sizeof(T*)。将 *nix 或 x86 Windows 代码移植到 x64 Windows 时经常遇到的错误。

关于c++ - MinGW 作为可靠的 64 位 GCC 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942923/

相关文章:

c++ - 具有两种类型的模板 vector

c - 是否有用于检查 Linux 内核版本的宏定义?

c++ - 减少内存分配 GCC 命令

c++ - 抑制 GCC 警告

c - 如何将混合(asm、C)源代码编译为 32 位程序?

c++ - 虚函数重定义隐藏了另一个基类的同名重载函数

c++ - 如何使用协变返回从基类中检索派生类?

c++ - 使用 boost 求解(密集)线性系统 Ax=b

windows-7 - 通过 Cygwin 在 Windows 终端中显示彩色文件?

cygwin - Cygwin 上的 startx 发生了什么?