繁体   English   中英

哪个 MinGW 文件用作 C++ 编译器

[英]Which MinGW file to use as a C++ compiler

我刚刚安装了 MinGW,在 bin 文件夹中我可以看到 7 个编译我的程序的 .exe 文件:

  1. c++.exe
  2. g++.exe
  3. mingw32-c++.exe
  4. mingw32-g++.exe
  5. gcc.exe
  6. mingw32-gcc.exe
  7. mingw32-gcc-4.4.1.exe

我的小程序(testprog.cpp)与它们中的每一个都能正确编译; a.exe文件在 bin 文件夹中生成,并且运行正常。

它们之间有什么区别,我应该使用哪一个? 另外,在每次成功编译时,如何将输出文件的名称从 a.exe 自动更改为 testprog.exe?

这些遵循 gcc 命名约定。

  • c++.exe 是系统 c++ 编译器的传统名称
  • g++.exe 和 gcc.exe 是为“当前系统”编译的 gcc 编译器的名称
  • mingw32-* 版本是交叉编译到“mingw”目标的编译器的名称。 在这种情况下,这与系统目标相同。
  • 然后 mingw32-gcc-4.1.exe 是“gcc for mingw target version 4.1”

您通常应该用“gcc”变体编译 C 代码,用“g++”变体编译 c++ 代码。

使用-o filename来指定输出文件名,默认是 a.exe

它们很可能都是一样的。 精确的副本或相互的符号链接。 尝试在每个选项上使用--version标志,看看你有什么。 在我的 MingGW 安装中,这些二进制文件中的每一个都不同(使用diff检查),但它们都输出相同的版本信息(除了第一位,即文件名):

gcc.exe (GCC) 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

使用-o标志更改输出文件名:

gcc -o testprog.exe testprog.cpp

在 unix 中,它们主要通过符号链接。 唯一的主要区别在于“cc”与“++”之间。 如果您使用标准 C++ 库的任何部分,您应该注意到这两者之间的区别。 '++' 版本会自动链接到该库。 'cc' 是 C 编译器,所以不要......尽管您可以通过添加 -lstdc++ 或其他任何内容将它们用作 C++ 编译器。

当我在网上搜索有关制作一些 DLL 的说明时,我遇到了一个 C++ 编译过程,据我所见,使用 g++ 编译 c++ 的方式与使用 gcc 相同。

我用“g++.exe” 在此处输入图像描述

然后在我的 IDE VSCode 中,我还必须将“IntelliSense 模式”更改为“windows-gcc-x64”以消除警告在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM