Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

7.1 Compiling a simple C++ program

The procedure for compiling a C++ program is the same as for a C program, but uses the command g++ instead of gcc. Both compilers are part of the GNU Compiler Collection.

To demonstrate the use of g++, here is a version of the Hello World program written in C++:

#include <iostream>

int 
main ()
{
  std::cout << "Hello, world!\n";
  return 0;
}

The program can be compiled with the following command line:

$ g++ -Wall hello.cc -o hello

The C++ frontend of GCC uses many of the same the same options as the C compiler gcc. It also supports some additional options for controlling C++ language features, which will be described in this chapter. Note that C++ source code should be given one of the valid C++ file extensions '.cc', '.cpp', '.cxx' or '.C' rather than the '.c' extension used for C programs.

The resulting executable can be run in exactly same way as the C version, simply by typing its filename:

$ ./hello
Hello, world!

The executable produces the same output as the C version of the program, using std::cout instead of the C printf function. All the options used in the gcc commands in previous chapters apply to g++ without change, as do the procedures for compiling and linking files and libraries (using g++ instead of gcc, of course). One natural difference is that the -ansi option requests compliance with the C++ standard, instead of the C standard, when used with g++.

Note that programs using C++ object files must always be linked with g++, in order to supply the appropriate C++ libraries. Attempting to link a C++ object file with the C compiler gcc will cause "undefined reference" errors for C++ standard library functions:

$ g++ -Wall -c hello.cc
$ gcc hello.o       (should use g++)
hello.o: In function `main':
hello.o(.text+0x1b): undefined reference to `std::cout'
.....
hello.o(.eh_frame+0x11): 
  undefined reference to `__gxx_personality_v0'

Undefined references to internal run-time library functions, such as __gxx_personality_v0, are also a symptom of linking C++ object files with gcc instead of g++. Linking the same object file with g++ supplies all the necessary C++ libraries and will produce a working executable:

$ g++ hello.o
$ ./a.out
Hello, world!

A point that sometimes causes confusion is that gcc will actually compile C++ source code when it detects a C++ file extension, but cannot then link the resulting object files.

$ gcc -Wall -c hello.cc   (succeeds, even for C++)
$ gcc hello.o
hello.o: In function `main':
hello.o(.text+0x1b): undefined reference to `std::cout'

To avoid this problem, use g++ consistently for C++ programs and gcc for C programs.


 
 
  Published under the terms of the GNU General Public License Design by Interspire