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

我刚刚安装了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?

他们很可能都是一样的; 要么是精确的副本,要么是彼此的符号链接。 尝试在每个上面使用--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 

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

在unix中,他们主要是通过符号链接。 唯一的主要区别在于’cc’与’++’之间。 如果您使用标准C ++库的任何部分,您应该注意到这两者之间的差异。 ‘++’版本自动链接到该lib。 ‘cc’是C编译器,所以不要……虽然你可以通过添加-lstdc ++或其他任何东西将它们用作C ++编译器。

当我在网上搜索有关制作一些DLL的指令时,我遇到了C ++编译过程,从我看到的,他们使用g ++编译c ++与使用gcc一样。