Code Compilation
During preprocessing, directives like #include<...> are processed to include the content of header files into the source code. Preprocessing handles tasks like including header files and macro expansions, which, in turn, help organizing code and making it more mantainable.
In this step, the source code written in C is translated into Assembly language, which provides a human-readable representation of the code's machine instructions. Assembly language acts as an intermediary between high-level languages (in which we can include C, believe it or not) and the binary machine code that computers understand.
The assembly code that was generated in the previous step is then assembled into binary machine code (a sequence of 1's and 0's that the computer's CPU can execute). This involves generating object files (.o files) from assembly code and then converting those objects into machine code.
Finally, the linking step involves combining different binary files, such as object files generated from multiple source files, into a single executable program. Note that this process resolves references to external functions and libraries, ensuring that all components are working together seamlessly.