Does linking and loading of the the dynamic libraries both happen at runtime? or is it that only loading of the library happens at run time?
Windows and Unix systems use completely different approaches to Dynamic libraries.
Windows DLLs are not linked. Therefore, you cannot share static objects across DLLs. It's just like a separate program in your address space.
Unix shared objects are really "linked" in run time, just as different modules of the same project, performing symbol resolution.