I need little clarification in this area. I feel that the terms Static library & Dynamic Library are not correct.
.o files are not any kind of library file. They are an object file.
.a/.lib files are linked at build time. They cannot be replaced after the fact. This makes them static.
.so/.dll files are linked at runtime. They can be replaced any time before execution starts. This makes them dynamic.
Relocation refers to placement of a binary in memory; code from static libraries is integrated with the binary and so can't be relocated independently.