[arch-general] 'gcc' vs 'c++' for compiling c++ files
Compiling a sample xxx.cc file using 'c++' command compiles fine whereas 'gcc' command outputs errors. A whole bunch of 'undefined reference to's. Am i wrong to assume that 'gcc' command would use the file extension and call the appropriate compiler.
I guess you are wrong ;) See `man gcc` where the DESCRIPTION states: The usual way to run GCC is to run the executable called gcc, or machine-gcc when cross-compiling, or machine-gcc-version to run a specific version of GCC. When you compile C++ programs, you should invoke GCC as g++ instead. Have a nice evening! Patrick On 07.09.2017 22:41, Arch User via arch-general wrote:
Compiling a sample xxx.cc file using 'c++' command compiles fine whereas 'gcc' command outputs errors. A whole bunch of 'undefined reference to's. Am i wrong to assume that 'gcc' command would use the file extension and call the appropriate compiler.
While Patrick is right and I agree that you should use the proper compiler for the given language, it is not true that your assumption about filenames was wrong. The `gcc` command is choosing the compiler for the file based on its suffix¹. Files ending with “.cc” are among these considered to be C++ sources and they should compile fine with `gcc`. Your description confirms that compilation goes ok. What doesn’t is linking. Compiled files have no language — they’re already compiled — and therefore `gcc` has no idea that it should do language-specific magic, like linking against libstdc++. ____ ¹ man gcc → the begining of “Options Controlling the Kind of Output”
participants (3)
-
Arch User
-
mpan
-
Patrick Eigensatz