I have read some articles on dynamic linking and shared library. And as far as i have understood the concept 'Dynamic loading requires support from kernel. The process goes like following:
prog invoked on bash-> bash forks itself and replaces its address space with the program to run ->The kernel verifies whether the required library resides in the memory. If not, it will load the file into memory and does the relocation of library symbols-> It then invokes the dynamic linker to resolve unresolved symbols of the program (referring to stub) ->Then the control transfers to our program main
If I am wrong please do share your knowledge.