title: Object files vs Library files and why?
body: <p>I understand the basics of compilation.
  Source files compiled to object files which the linker then links into executables.
  These object files are comprised of source files containing definitions.</p>
  
  <p>So my questions are:</p>
  
  <hr>
  
  <ul>
  <li>Why do we have a separate implementation for a library? .a .lib,
  .dll...</li>
  <li>I am probably mistaken, but it seems to me like .o files themselves
  are kind of the same thing as libraries?</li>
  <li>Couldn't someone give you their .o implementations of a certain
  declaration (.h) and you could replace that in and have it linked to
  become an executable that performs the same functions, but using
  different operations?</li>
  </ul>