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

Abb*_*bas 19 c c++ compiler-construction mingw

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

  1. C++.exe文件
  2. 克++.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?

Eri*_*rik 14

这些遵循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


Car*_*rum 8

他们很可能都是一样的; 要么是精确的副本,要么是彼此的符号链接.尝试使用--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.
Run Code Online (Sandbox Code Playgroud)

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

gcc -o testprog.exe testprog.cpp
Run Code Online (Sandbox Code Playgroud)

  • @Abbas - 前4个是C++编译器,最后3个是C编译器.他们可能有不同的链接行为,正如@Crazy Eddie在他的回答中提到的那样.名称中带有"++"的那些也可能默认将文件编译为C++,即使它们具有简单的.c扩展名. (2认同)

Edw*_*nge 5

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