Life Cycle of a C Program


Every C Program that is in text form goes through a series of transformations to obtain the final executable. The various Phases of this transformation are as follows:

  1. Preprocessing
  2. Assembling
  3. Compiling
  4. Linking
  5. Loading to main memory

This Process is illustrated in the Figure 1 below

Figure 1

First we will see how to execute a C program in a GNU/Linux environment. We will be using the GCC/GDB toolchain that comes installed by default in almost all GNU/Linux distributions.

The following video link shows the different phases of the Life Cycle of a C program.

Life Cycle of a C Program – Click to view

Consider the program given below that calculates the area of a Circle given its radius.

// circle.c: Calculate and print the Areas of Circles
#include // Preprocessor directive
#define PI 3.1416

double fnCircularArea( double r ); // Function prototype

int main(void)
double dRadius = 1.0, dArea = 0.0;
printf( "\tAreas of Circles\n\n" );
printf( "\t\tRadius\t\tArea\n\t---------------------------------\n" );
dArea = fnCircularArea( dRadius );
printf( "Circle 1%14.3f\t%15.5f\n", dRadius, dArea );
dRadius = 5.0;
dArea = fnCircularArea( dRadius );
printf( "Circle 2%14.3f\t%15.5f\n", dRadius, dArea );
return 0;

// The function fnCircularArea( ) calculates the Area of a Circle
// Parameter: Radius of the Circle
// Returns: Area of the Circle
double fnCircularArea( double dR )
return PI * dR * dR;

Click on the following video link shows how to compile and execute the above C program.

Execution of a C program using gcc compiler – Click to view

TO check which version of gcc is installed

$ gcc --version

To compile a program circle.c and to show all warnings

$ gcc -Wall circle.c

Output Redirection

$ gcc -Wall -o circle.x circle.c


$ ./circle.x

Now we will see the different phases of transformation. The first phase is Preprocessing. Click on the below link to understand the phase of Preprocessing.

Preprocessing Phase – Click to view

Preprocess and write to circle.i

$ gcc -E -o circle.i circle.c

Preprocess but do not remove comments

$ gcc -E -C -o circle.i circle.c

In the next video link we will see how to perform assembling, compiling and linking.

Assembling, Compiling and Linking – Click to view

During the assembling phase the preprocessed code is converted into assembly code.


$ gcc -S circle.c

verbose mode

$ gcc -S -fverbose-asm circle.c

During the Compilation stage the assembled code is converted into object code.

Compile only

$ gcc -c circle.c

The object code is then linked to get the final executable

$ gcc circle.o -o circle.x

All the phases discussed above can be generated in a single command as follows

$ gcc -Wall -o circle.x circle.c -save-temps

Finally take this quiz that can be accessed at this moodle site. Click on the following Link
Here scroll down to find the course IITB OER QUIZ
Click on it and login name as demouser  with Change@1nce as the password to access the course
There in the course under Topic 1 you can find a Demo Quiz. Click and take the quiz

Prabodh C P is a faculty in the Dept of CSE SIT, Tumkur and also currently a Research Scholar pursuing PhD in IIT Hyderabad. He conducts online classes for C, C++, Python. For more info call +919392302100

Leave a Reply

Your email address will not be published. Required fields are marked *