Selection of Static or Dynamic Loading is made by developer at the time of computer program being developed.
In case of static loading, the complete program is compiled and linked without leaving any external program or module dependency at the time of compilation.
With static loading, the absolute program (and data) is loaded into memory in order for execution to start.
The linker combines the object program with other necessary object modules into an absolute program, which also includes logical addresses.
Whereas, In case of Dynamic loading, compiler compiles the program and for all the modules which are to be included dynamically, only references will be provided for them and rest of the work will be done at the time of execution.
Dynamic routines of the library are stored on a disk in relocatable form and are loaded into memory only when they are needed by the program.