Что такое статическая библиотека? Ну, во-первых, что такое библиотека? Для большинства людей в повседневной жизни библиотека — это здание, в котором хранится подборка различных книг. Каждая книга размещена на полке и организована по автору и названию. Ну, библиотека на языке программирования Си очень похожа. Это не здание, а файл в компьютерной системе. Этот файл содержит ряд объектных файлов, которые были бы похожи на книги, размещенные в реальной библиотеке. Эти объектные файлы представляют собой файлы, которые можно вызывать внутри исходного кода программы, если библиотека правильно связана.

Это приводит к тому, что библиотека C становится статической библиотекой. Статическая библиотека содержит объектные файлы, которые связаны с исходным кодом в процессе компоновки компиляции, но не являются необходимыми при фактическом запуске программы. Это означает, что единственным файлом, который потребуется человеку для запуска программы, будет исполняемый файл, созданный во время компиляции.

Создать статическую библиотеку в Unix довольно просто. Все, что нужно сделать, это запустить программу ar, что означает архиватор. Эта программа помещает копии любых объектных файлов, именуемых пользователями, в архивный файл, который фактически является тем же самым, что и статическая библиотека. Например, пользователь может использовать следующую команду:

ar rc liballfiles.a *.o

Эта команда создаст библиотеку с именем «liballfiles.a», которая будет содержать копии всех файлов в текущем каталоге, которые заканчиваются на «.o», что помечает их как объектный файл. Флаг r указывает команде заменить любые уже существующие объектные файлы более новыми версиями, если таковые имеются. Флаг c указывает команде создать библиотеку, если она еще не существует. Если библиотека уже существует, новые файлы будут просто добавлены в уже существующую библиотеку.

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

gcc main.c -L. -lallfiles

Это скомпилирует C-файл main.c, а затем, как и библиотеку allies, или liballfiles.a. Префикс «lib» и суффикс «.a» опущены, потому что они будут добавлены компоновщиком во время компиляции для поиска файлов библиотеки. «-Л.» команда указывает компоновщику искать в текущем каталоге, представленном «.», возможные библиотеки, а также в любых стандартных местах, в которых он будет искать библиотеки.

Теперь пользователь создал и эффективно связал свою библиотеку со своим исходным кодом. Когда исполняемый файл запускается, любые символы в библиотеке, которые были упомянуты и использовались внутри исходного кода, будут доступны в исполняемом файле. Таким образом, для запуска программы не потребуется никаких других файлов, кроме исполняемого.

Ничего не поделаешь. Краткий урок о том, что такое статические библиотеки, как их создать и как использовать их в своей собственной программе.