Compiler Basics

The first thing you would want to do after you write a program is to check and see if it has any errors. There is a very effective and user friendly compiler called GNU C/C++ compiler/linker gcc. This utility is very helpful in finding out where your program has errors (especially when you have a coredump due to segmentation faults).

Generally, a large software system will consist of multiple programs, each of which uses multiple source files (MODULES) plus user and standard libraries. For example, a user's program may consist of n modules x1.c,x2.c, ..., xn.c.

To create an object from a C module x1.c (for c++ files use g++), use the command

gcc -c x1.c
If this command is successful then gcc will create and object file x1.o. (An object file is a file that contains linkable code plus symbol table information.)

If one of the n modules x1.c, ...., xn.c contains the ``main'' function, then we can create an executable from the object files as follows. (Here I assume that n=4.)

gcc x1.o x2.o x3.o x4.o
This will create the executable a.out. To create an executable named x, use the command

gcc -o x x1.o x2.o x3.o x4.o

More useful command-line options

Include debugging information into the object/executable. (Note that this must be done at both the object creation and linking stage.)


Generate all warning messages.




Perform more optimizations.


Perform even more optimizations.

Difference Between g++ and gcc:

G++ links to the necessary libraries to support C++ programs, while gcc is for straight C programs