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

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

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

Как они работают?

Как их создать?

  1. Список файлов с соответствующими функциями .c

2. компилирует файлы, в которых создаются .o

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

  • gcc =интегрированный компилятор, способный получать исходную программу и генерировать двоичную исполняемую программу.
  • Wall -Wextra -pendantic = флаги — это все флаги предупреждений и ошибок, которые следует включать при компиляции кода.
  • -c = связать создаваемые файлы как объекты

3. Создание книжного магазина с ar

ar -rc libholberton.a *.o

  • ar = Эту программу можно использовать для создания статических библиотек (фактически являющихся архивными файлами).
  • -r = заменяет старые файлы
  • -c =создать библиотеку, если она не существует

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

Мы можем визуализировать это с помощью nm

nm libholberton.a

  • -nm = перечисляет значение каждого символа, тип символа и имя символа объектных файлов.

Нам нужно проиндексировать наш созданный файл, это поможет компилятору при поиске внутри библиотеки эта команда ranlib

ranlib libholberton.a

  • -t = служит для просмотра содержимого нашей созданной библиотеки
ar -t libholberton.a

Использование библиотеки "C" в программе

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

gcc 0-isupper.c -L. -lholberton -o isupper

./isupper

Ссылка