Ada perpustakaan statis (LIB) dan perpustakaan dinamis (DLL) - tetapi perhatikan bahwa file .LIB dapat berupa perpustakaan statis (berisi file objek) atau mengimpor perpustakaan (berisi simbol untuk memungkinkan linker untuk menautkan ke DLL).
Perpustakaan digunakan karena Anda mungkin memiliki kode yang ingin Anda gunakan di banyak program. Misalnya jika Anda menulis fungsi yang menghitung jumlah karakter dalam sebuah string, fungsi itu akan berguna dalam banyak program. Setelah Anda menjalankan fungsi itu dengan benar, Anda tidak ingin harus mengkompilasi ulang kode setiap kali menggunakannya, jadi Anda meletakkan kode yang dapat dieksekusi untuk fungsi itu di perpustakaan, dan penghubung dapat mengekstrak dan menyisipkan kode yang dikompilasi ke dalam program Anda . Perpustakaan statis kadang-kadang disebut 'arsip' karena alasan ini.
Perpustakaan dinamis mengambil satu langkah lebih jauh. Tampaknya boros memiliki banyak salinan fungsi perpustakaan yang menghabiskan ruang di masing-masing program. Mengapa mereka tidak bisa berbagi satu salinan fungsi? Inilah gunanya perpustakaan dinamis. Alih-alih membangun kode perpustakaan ke dalam program Anda ketika dikompilasi, ia dapat dijalankan dengan memetakannya ke dalam program Anda saat kode tersebut dimuat ke dalam memori. Beberapa program yang berjalan pada saat yang sama yang menggunakan fungsi yang sama semuanya dapat berbagi satu salinan, menghemat memori. Bahkan, Anda dapat memuat pustaka dinamis hanya sesuai kebutuhan, tergantung pada jalur melalui kode Anda. Tidak ada gunanya membuat rutinitas printer menghabiskan memori jika Anda tidak melakukan pencetakan apa pun. Di sisi lain, ini berarti Anda harus memiliki salinan perpustakaan dinamis yang diinstal pada setiap mesin yang menjalankan program Anda.
Sebagai contoh, hampir setiap program yang ditulis dalam 'C' akan membutuhkan fungsi dari pustaka yang disebut 'C runtime library, meskipun beberapa program membutuhkan semua fungsi tersebut. C runtime hadir dalam versi statis dan dinamis, sehingga Anda dapat menentukan versi mana yang digunakan program Anda tergantung pada kebutuhan tertentu.