Статическая библиотека — это набор скомпилированных объектных файлов (.o в Linux, .obj в Windows), упакованных в единый архивный файл (.a в Linux, .lib в Windows). При сборке исполняемого файла код из статической библиотеки полностью копируется в него.
Основные характеристики:
- Размер исполняемого файла: Увеличивается, так как код библиотеки встраивается.
- Зависимости: Исполняемый файл не зависит от наличия статической библиотеки во время выполнения. Он самодостаточен.
- Обновление: Требует перекомпиляции исполняемого файла при изменении библиотеки.
- Совместное использование: Код библиотеки дублируется в каждом исполняемом файле, который ее использует, что может увеличивать общий объем дискового пространства.
Использование:
-
Создание библиотеки: Объектные файлы архивируются утилитой ar (Linux) или lib (Windows).
bash
-
Компоновка с библиотекой: При сборке исполняемого файла компоновщику указывается путь к статической библиотеке.
bash
Преимущества:
- Не требует установки или распространения библиотеки отдельно от исполняемого файла.
- Отсутствие проблем с версиями библиотек (DLL/shared library hell), так как код библиотеки включен в исполняемый файл.
Недостатки:
- Увеличение размера исполняемого файла.
- Невозможность обновления функционала библиотеки без перекомпиляции всех использующих ее исполняемых файлов.
- Дублирование кода библиотеки в памяти, если запущено несколько программ, использующих одну и ту же статическую библиотеку.