哪个 MinGW 文件用作 C 编译器

新手上路,请多包涵

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

原文由 Abbas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 857
2 个回答

它们很可能都是一样的。精确的副本或相互的符号链接。尝试在每个上使用 --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

原文由 Carl Norum 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

原文由 Erik 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题