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

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

Как работает?

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

Как создать динамические библиотеки?

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

Прежде всего подготовьте функции

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

Скомпилируйте функции

Используйте флаг -fpic gcc таким образом

gcc -c -Wall -Werror -Wextra -fpic *.c

Создайте общую библиотеку

Используйте флаг -shared для его создания.

gcc -shared -o libtest.so *.o

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

Что теперь?

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

gcc -L/opt/lib -Wall -Werror -o test program.c -ltest.c

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

Теперь важно добавить в переменную среды LD_LIBRARY_PATH маршрут вашей общей библиотеки.

LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH

Теперь экспортируйте, чтобы включить в программу и другие

export LD_LIRBARY_PATH=/opt/lib:$LD_LIBRARY_PATH

Теперь попробуйте выполнить вашу программу, и вы увидите, как она работает правильно.

В чем отличия статических библиотек

В основном основное отличие заключается в возможности поделиться динамикой с другими программами.

Преимущества использования динамических библиотек

  • Общие библиотеки с другими программами
  • Не нужно перекомпилировать библиотеки с основной программой
  • Поведение аналогично плагинам в браузере.

Недостатки использования динамических библиотек

  • Некоторая дополнительная настройка путей, по которым мы можем найти библиотеки.

О последних достоинствах и недостатках статических читайте в статье о статических библиотеках.