Compilation Process In C Language
What is a compilation?
The
compilation is a process of converting the source code into object code. It is
done with the help of the compiler. The compiler checks the source code for the
syntactical or structural errors, and if the source code is error-free, then it
generates the object code.
Fig: Compilation Process In c Language |
The
c compilation process converts the source code taken as input into the object
code or machine code. The compilation process can be divided into four steps,
i.e., Pre-processing, Compiling, Assembling, and Linking.
The
preprocessor takes the source code as an input, and it removes all the comments
from the source code. The preprocessor takes the preprocessor directive and
interprets it.
For example, if <stdio.h>, the directive
is available in the program, then the preprocessor interprets the directive and
replace this directive with the content of the 'stdio.h' file.
The
following are the phases through which our program passes before being
transformed into an executable form:
- Preprocessor
- Compiler
- Assembler
- Linker
Fig: Process to compilation in C |
Preprocessor
The source code is the code which is written in a text editor and the source code file is given an extension ".c". This source code is first passed to the preprocessor, and then the preprocessor expands this code. After expanding the code, the expanded code is passed to the compiler.
Compiler
The code which is expanded by the preprocessor is passed to the compiler. The compiler converts this code into assembly code. Or we can say that the C compiler converts the pre-processed code into assembly code.
Assembler
The assembly code is converted into object code by using an assembler. The name of the object file generated by the assembler is the same as the source file. The extension of the object file in DOS is '.obj,' and in UNIX, the extension is 'o'. If the name of the source file is 'hello.c', then the name of the object file would be 'hello.obj'.
Linker
Mainly, all the programs written in C use library functions. These library functions are pre-compiled, and the object code of these library files is stored with '.lib' (or '.a') extension.
The main working of the linker is to combine the object code of library files with the object code of our program. Sometimes the situation arises when our program refers to the functions defined in other files; then linker plays a very important role in this.
It links the object code of these files to our program. Therefore, we conclude that the job of the linker is to link the object code of our program with the object code of the library files and other files.
The output of the linker is the executable file. The name of the executable file is the same as the source file but differs only in their extensions. In DOS, the extension of the executable file is '.exe', and in UNIX, the executable file can be named as 'a.out'.
For example, if we are using printf() function in a program, then the linker adds its associated code in an output file.
Let's understand through an example.
hello.c
#include <stdio.h>
int main()
{
printf("Hello dwivedicyberdairy");
return 0;
}
No comments:
Post a Comment