Abbas
Abbas

Reputation: 6886

Which MinGW file to use as a C++ compiler

I have just installed MinGW and in the bin folder I can see 7 .exe files that compile my program:

  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

My small program (testprog.cpp) compiles correctly with each of them; the a.exe file is generated in the bin folder and it runs correctly.

What's the difference between them and which one should I use? Also, what can I do to change the name of the output file from a.exe to testprog.exe automatically upon each successful compile?

Upvotes: 32

Views: 16699

Answers (5)

Manny
Manny

Reputation: 43

I used "g++.exe" enter image description here

Then in my IDE, VSCode, I also had to change the "IntelliSense mode" to "windows-gcc-x64" to get rid of the warning enter image description here

Upvotes: 0

Maurice Rodriguez
Maurice Rodriguez

Reputation: 663

While I was searching around the web for instructions in making some DLLs, I ran into a C++ compilation process that, from what I saw, used g++ to compile c++ the same way as using gcc.

Upvotes: 0

Erik
Erik

Reputation: 91270

These follow gcc naming conventions.

  • c++.exe is a traditional name for the system c++ compiler
  • g++.exe and gcc.exe are the names for the gcc compilers that compile for the "current system"
  • mingw32-* versions are the names for the compilers that cross-compile to the "mingw" target. In this case this is the same as the system target.
  • An then mingw32-gcc-4.1.exe is "gcc for mingw target version 4.1"

You should typically compile C code with a "gcc" variant, and c++ code with a "g++" variant.

Use -o filename in order to specify the output filename, the default is a.exe

Upvotes: 20

Edward Strange
Edward Strange

Reputation: 40859

In unix they'd mostly by symbolic links. The only major difference is between the 'cc' vs. '++' ones. You should notice a difference between these two if you use any part of the standard C++ library. The '++' versions link to that lib automatically. The 'cc' ones are C compilers and so don't...though you can use them as C++ compilers by just adding -lstdc++ or whatever.

Upvotes: 5

Carl Norum
Carl Norum

Reputation: 224904

It's quite possible that they are all the same; either exact copies or symbolic links to one another. Try using the --version flag on each to see what you've got. On my MingGW installation here, each of those binaries differs (checked with diff), but they all output the same version information (with the exception of the first bit, which is the filename):

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.

Use the -o flag to change the output file name:

gcc -o testprog.exe testprog.cpp

Upvotes: 9

Related Questions