Что они делают, зачем их использовать и как создать и использовать самостоятельно

Что такое статическая библиотека и зачем нам ее использовать?

Есть два типа библиотек, которые мы можем создать в системе Unix: статическая библиотека и динамическая (разделяемая) библиотека. Статическая библиотека, которая индексирует ряд функций, созданных для использования в программе, может быть повторно использована более чем в одной программе, но в конечном счете блокируется в программе во время процесса компиляции.

Динамическая библиотека состоит из отдельных файлов вне исполняемого файла, что означает, что ее можно модифицировать без повторной компиляции. Так зачем использовать статическую библиотеку? Есть несколько преимуществ по сравнению с динамической библиотекой: во-первых, статической библиотеке не угрожает опасность быть поврежденной так же, как динамической библиотеке, поскольку она привязана к исполняемому файлу, и, во-вторых, поскольку она привязана к исполняемому файлу, она выполняется гораздо быстрее. Статическая библиотека будет лучшим вариантом, если экономия места не является приоритетом по сравнению с возможностью более эффективного выполнения вашей программы.

Как сделать статическую библиотеку: шаг за шагом

Шаг 1: Подготовьте исходный код.

В этом примере файлы нашей программы C в текущем каталоге будут преобразованы в объектный код. Используйте gcc для преобразования в объектный код и подстановочный знак звездочки, чтобы выбрать все файлы C в текущем каталоге.

Шаг 2. Используйте ar для архивации ваших новых файлов объектного кода в виде статической библиотеки.

Здесь наша библиотека называется libKati, и мы даем ей расширение .a, чтобы показать, что это действительно библиотека. Использование флага c сообщит ar создать libKati только в том случае, если он еще не существует, а флаг r сообщит ar заменить старые объектные файлы вновь созданными.

Шаг 3: Проиндексируйте новый архив с помощью ranlib

После создания нашего архива нам нужно его проиндексировать. Компилятор использует этот индекс для ускорения поиска символов. Затем вы можете использовать nm -s в командной строке, чтобы просмотреть этот индекс.

Вам также необходимо включить в каталог заголовочный файл со всеми прототипами функций, включенными в вашу библиотеку.

Теперь вы готовы использовать свою статическую библиотеку.

Использование вашей статической библиотеки

Чтобы использовать вашу статическую библиотеку, сначала создайте файл C с вашей основной функцией и скомпилируйте его.

Теперь мы можем связать основную программу со статической библиотекой. Мы будем использовать флаг -L, чтобы указать компилятору, что библиотека находится в текущем каталоге.

Теперь мы можем запустить основную программу, и она сможет использовать нашу новую библиотеку.