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

В C библиотека — это набор файлов, которые вы можете импортировать и включать в свою программу. Библиотека точно такая же, как исполняемый файл, за исключением того, что функции библиотеки вызываются не напрямую, а с параметрами из исполняемого файла.

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

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

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

Два типа библиотек, их преимущества и недостатки:

1. Статическая (или объектная) библиотека. Статические библиотеки представляют собой наборы объектных файлов, сгруппированных в один файл, обычно с расширением .lib или .a., сопровождаемый файлами заголовков, обычно .h (которые содержат объявления определенных объектов). в библиотеке). Эта библиотека останется неизменной, если программа не будет перекомпилирована. Это самый простой способ использования библиотеки, поскольку конечным результатом является простой исполняемый файл без каких-либо зависимостей. Однако он имеет ряд недостатков. Два основных из них:

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

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

2. Динамическая (или общая) библиотека. Общие библиотеки позволяют обойти проблемы, связанные со статической библиотекой. Общая библиотека — это библиотека, которая динамически загружается во время выполнения для каждого приложения, которому она требуется.

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

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

Как создать библиотеку на C

В предыдущем посте мы говорили о том, что такое статическая библиотека и как ее создать. библиотека-в-c-8a0bcd527fc5»

Как создать библиотеку? Это занимает несколько шагов, но это просто…

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

Затем введите для динамической библиотеки:

gcc -c -fPIC *.c

И для статической библиотеки:

gcc -с *.с

Эта команда (gcc) с « -c » для создания объектных файлов (.o) из исходных файлов (.c). «*.c» просто означает, что будут приняты все файлы, заканчивающиеся на «.c».

«-fPIC» для динамического делает позицию кода независимой. Это означает, что он генерирует файл .o из каждого файла .c в текущем каталоге (вы можете выбрать, какие функции вы хотите для своей библиотеки).

Теперь у нас есть наши объектные коды, мы создадим библиотеки.

Чтобы создать статическую библиотеку с именем libschool.a:

С помощью команды: (обратите внимание, что статическая библиотека всегда начинается с «lib» и заканчивается на «.a»)

ar -rc libschool.a *.o

А потом :

ранлиб libschool.a

Первый заархивирует (команда « ar ») все наши объектные файлы в нашей библиотеке. Флаг «-r» указывает заменить старые объектные файлы в библиотеке новыми, а флаг «-c» указывает команде создать библиотеку, если она еще не существует.

Второй используется для индексации библиотеки.

Чтобы создать динамическую библиотеку с именем libholberton.so, запустите в своем терминале: (обратите внимание, что, как и статическая библиотека, динамическая библиотека начинается с «lib», но заканчивается «.so», что означает «общий объект»)

gcc -shared -o libholberton.so *.o

Параметр «-o» помещает вывод в libholberton.so, а флаг «-shared» указывает компилятору преобразовать файл «.o» в разделяемую библиотеку. Обратите внимание, что вам не нужно индексировать его.

Как это использовать

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

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

экспорт LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

Затем вы можете скомпилировать его, набрав следующее:

gcc-л. 0-main.c -l холбертон -o пример

Обратите внимание, что имя, которое мы дали библиотеке в этом примере, было «holberton». Здесь мы используем опцию «-L», чтобы сообщить программе, где найти библиотеку, в данном случае. который ссылается на текущий каталог. В этом случае параметр «-l» указывает компилятору искать библиотеку в переменной окружения.

« пример » — это имя функции, которую вы хотите использовать в случае