Существуют статические библиотеки (LIB) и динамические библиотеки (DLL), но обратите внимание, что файлы .LIB могут быть либо статическими библиотеками (содержащими объектные файлы), либо библиотеками импорта (содержащими символы, позволяющие компоновщику связываться с DLL).
Библиотеки используются потому, что у вас может быть код, который вы хотите использовать во многих программах. Например, если вы напишите функцию, которая подсчитывает количество символов в строке, эта функция будет полезна во многих программах. Как только вы получите правильную работу этой функции, вам не нужно будет перекомпилировать код каждый раз, когда вы ее используете, поэтому вы помещаете исполняемый код этой функции в библиотеку, и компоновщик может извлечь и вставить скомпилированный код в вашу программу. , По этой причине статические библиотеки иногда называют «архивами».
Динамические библиотеки делают еще один шаг вперед. Кажется расточительным иметь несколько копий библиотечных функций, занимающих место в каждой из программ. Почему они не могут поделиться одной копией функции? Для этого и нужны динамические библиотеки. Вместо того, чтобы встраивать библиотечный код в вашу программу при ее компиляции, его можно запустить, сопоставив его с вашей программой по мере загрузки в память. Несколько одновременно работающих программ, использующих одни и те же функции, могут совместно использовать одну копию, экономя память. Фактически, вы можете загружать динамические библиотеки только по мере необходимости, в зависимости от пути через ваш код. Нет смысла заставлять принтер загружать память, если вы не печатаете. С другой стороны, это означает, что вы должны иметь копию динамической библиотеки, установленной на каждом компьютере, на котором работает ваша программа.
Например, почти каждая программа, написанная на «C», будет нуждаться в функциях из библиотеки, называемой «C runtime library», хотя немногим программам понадобятся все функции. Среда выполнения C поставляется в статической и динамической версиях, поэтому вы можете определить, какую версию использует ваша программа, в зависимости от конкретных потребностей.