Статические библиотеки на C

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

Библиотеки используются, как было сказано ранее, для легкого доступа в программе (обычно основная функция, но может использоваться и в других функциях) к некоторому символу, который уже создан или определен в такой библиотеке, что делает поток работы намного быстрее и эффективнее. , поэтому всякий раз, когда мы хотим вызвать что-то из библиотеки, будь то статическая или динамическая, такая библиотека должна использоваться.

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

Чтобы создать статическую библиотеку, необходимо иметь 2 вещи: объекты, которые нужно поместить в библиотеку, и инструмент для ее создания, в данном случае команду ar, давайте посмотрим, как в деталях.

Здесь у нас есть наши «сырые» файлы, которые скоро станут объектами, поэтому нам нужно скомпилировать их, не связывая их, используя команду gcc -c.

Успех! Теперь у нас есть наши объектные файлы, теперь, чтобы собрать их вместе, мы будем использовать команду ar следующим образом: ar -cr эти 2 флага, по порядку, скажут создать новую библиотеку, если она еще не создана, и заменить старые файлы всякий раз, когда это применимо.s

Теперь у нас есть наш архив, наша статическая библиотека, последний шаг, который нужно сделать, это тот, который используется с командой ranlib, эта команда проиндексирует библиотеку (и может использоваться для многих других вещей, читайте справочную страницу!) .

Теперь вы можете задаться вопросом: «Но как мне использовать эту новую библиотеку в моей программе?», достаточно просто, вы должны собрать их вместе прямо перед процессом компоновки, чтобы компилятор знал, где искать файл библиотеки, это делается с помощью компилятора gcc и флагов -L и -l, например: gcc examplemain.c -L. -staticlib -o пример программы

Обратите внимание, что в примере перед «.» это указывает компилятору искать файл в текущем рабочем каталоге, а также обратите внимание на отсутствие расширения (бит «.a» в имени файла) в нашей библиотеке. , это потому, что компилятор может сказать, что имя, данное во входных данных, должно заканчиваться на «.a».

И это краткий обзор статических библиотек на C и того, как их сделать, обязательно прочтите немного больше самостоятельно!