Question: How to compile a C++ program with gcc compiler?
info.c:
#include<iostream>
using std::cout;
using std::endl;
int main()
{
#ifdef __cplusplus
cout << "C++ compiler in use and version is " << __cplusplus << endl;
#endif
cout <<"Version is " << __STDC_VERSION__ << endl;
cout << "Hi" << __FILE__ << __LINE__ << endl;
}
and when I try to compile info.c
$ gcc info.C
Undefined first referenced
symbol in file
cout /var/tmp/ccPxLN2a.o
endl(ostream &) /var/tmp/ccPxLN2a.o
ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o
ostream::operator<<(int) /var/tmp/ccPxLN2a.o
ostream::operator<<(long) /var/tmp/ccPxLN2a.o
ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
Isn't gcc compiler capable of compiling C++ programs? On a related note, what is the difference between gcc and g++. Thanks,
If I recall correctly, gcc determines the filetype from the suffix. So, make it foo.cc and it should work.
And, to answer your other question, that is the difference between "gcc" and "g++". gcc is a frontend that chooses the correct compiler.
use
g++
instead ofgcc
.By default, gcc selects the language based on the file extension, but you can force gcc to select a different language backend with the -x option thus:
More options are detailed in the gcc man page under "Options controlling the kind of output". See e.g. http://linux.die.net/man/1/gcc (search on the page for the text
-x language
).This facility is very useful in cases where gcc can't guess the language using a file extension, for example if you're generating code and feeding it to gcc via stdin.
The difference between gcc and g++ are:
use g++ instead of gcc to compile you c++ source.
If you give the code a .c extension the compiler thinks it is C code, not C++. And the C++ compiler driver is called g++, if you use the gcc driver you will have linker problems, as the standard C++ libraries will not be linked by default. So you want:
And do not even consider using an uppercase .C extension, unless you never want to port your code, and are prepared to be hated by those you work with.
It worked well for me. Just one line code in cmd.
First, confirm that you have installed the gcc (for c) or g++ (for c++) compiler.
In cmd for gcc type:
gcc --version
in cmd for g++ type:
g++ --version
If it is installed then proceed.
Now, compile your .c or .cpp using cmd
for .c syntax:
gcc -o exe_filename yourfilename.c
Example:
gcc -o myfile myfile.c
Here exe_filename (myfile in example) is the name of your .exe file which you want to produce after compilation (Note: i have not put any extension here). And yourfilename.c (myfile.c in example) is the your source file which has the .c extension.
Now go to folder containing your .c file, here you will find a file with .exe extension. Just open it. Hurray..
For .cpp syntax:
g++ -o exe_filename yourfilename.cpp
After it the process is same as for .c .