Compiler, Obect Code / Relocatable Code, Linker
When we compile a C source file using the GNU C compiler (GCC), the compiler first translates the code into an assembly source file. This assembly source is then processed by the assembler, which is included with GCC. The assembler generates object code, which is in a relocatable machine code format and is usually not directly executable.
Next, the linker steps in to link the necessary libraries. Libraries are also in a relocatable format, which is why we compile them with the -shared, -fpic, or -fPIC flags.
During the linking process, the linker checks the library names included in the source file and verifies whether these libraries are available in the system’s default library path, typically /usr/lib on GNU/Linux systems. If the required libraries are not in the default path, you can specify their location by passing them as an argument to GCC using the -I flag, like so:
gcc -I/home/shuja/Documents/libmy.so
C Source FileAssembly Source (generated by GNU C compiler)
Disassembled object code (Disassembled because object code isn't human readable)
test.c - C source, test.s - assembly source, test.o - object code, exic - exicutable, test.bin - flat binary file
System default library path /usr/lib (GNU Linux)
Comments
Post a Comment