I have read a lot of article about linker or loader but
I am confuse who is responsible to replace absolute reference in an object module by symbolic references to location in other object modules.
Does linker replace symbolic reference in other object module or loader make this at program loading time in main memory
Resolving symbol dependencies between object modules has traditionally been the responsibility of the linker. The linker examines all object files and resolves all symbolic references and builds a monolithic executable. However, this approach breaks down when we introduce shared libraries, i.e. object modules that can be shared between different executables and that are linked to the program at load time. To make this work some parts of the linker is moved into the loader, making the resolution of dependencies as shared responsibility. The linker resolves dependencies between the object files and static libraries while the loader resolves dependencies between the executable and any shared library.