What is the “Compilation process” in C?
The compilation process make’s a series of tasks that translate from human readable code to a code that the machine understand (Binary notation).
To make this process possible, we must to type in the terminal or console the gcc command and the C file to compiled:
- gcc file.c
Once gcc has been invoked, will starting to make the following process:
- Pre-processing:
Via the GNU C preprocessor (cpp.exe), which includes the headers (#include) and expands the macros (#define).
cpp file.c > file.i
the resultant intermediate file “file.i” contains the expanded source code.
- Compilation:
This step compiles the pre-processed source code into assembly code for a specific processor.
gcc -S file.i
The -S option specifies to produce assembly code, instead of object code. The resultant assembly file is “file.s”
- Assembly:
The assembler (as.exe) converts the assembly code into machine code in the object file “file.o”.
as -o file.o file.s
- Linker:
Finally, the linker (ld.exe) links the object code with the library code to produce an executable file “file.exe”.
ld -o file.exe hello.o
In the following image we can see the behavior of gcc in a graphic instance.