When linking an application against a dynamic shared library such as in
gcc -o myprog myprog.o -lmylib
I know the linker (ld
on my Linux) use the -l option to store in the produced myprog ELF executable file the name of the library (mylib
in this case) that will be used at load and link time (both when the program will be started if we ignore lazy dynamic linking). I am wondering what are the other jobs perform by ld
(I am only speaking of the static linking step done at compilation time) regarding the dynamic shared library ?
ld
must checks for undefined symbol existence in provided dynamic shared libraries- any other stuff ?
Moreover, I will be interested on pointers you are using (books, online documentation) regarding ELF format and dynamic linking and loading processes.