What is the difference between g++ and gcc?

c++, g++, gcc

Solution

`gcc` and `g++` are compiler-drivers of the GNU Compiler Collection (which was once upon a time just the GNU C Compiler).

Even though they automatically determine which backends (`cc1` `cc1plus` ...) to call depending on the file-type, unless overridden with `-x language`, they have some differences.

The probably most important difference in their defaults is which libraries they link against automatically.

According to GCC's online documentation link options and how g++ is invoked, `g++` is roughly equivalent to `gcc -xc++ -lstdc++ -shared-libgcc` (the 1st is a compiler option, the 2nd two are linker options). This can be checked by running both with the `-v` option (it displays the backend toolchain commands being run).

By default (and unlike `gcc`), g++ also adds linker option `-lm` -- to link against `libm` which contains implementations for `math.h`.

Problem

What is the difference between g++ and gcc? Which one of them should be used for general c++ development?

Original source

Related problems