Показатель

  • Зачем использовать библиотеки
  • Как они работают
  • Как их создать
  • Как их использовать

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

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

Когда мы должны использовать статические библиотеки?

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

Как работают статические библиотеки C?

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

Как создать статическую библиотеку C?

Базовый, который мы используем для его создания, называется 'ar', что означает «архиватор». Эту команду можно использовать для создания статических библиотек (которые на самом деле являются архивными файлами), изменения объектных файлов в статической библиотеке, вывода списка имен объектных файлов в библиотеке и т. д. Итак, например, мы можем использовать эту команду следующим образом:

ar rc libutil.a util_file.o util_net.o util_math.o

Эта команда создает статическую библиотеку с именем «libutil.a» и помещает в нее копии объектных файлов «util_file.o», «util_net.o» и «util_math.o». Флаг 'c' указывает ar создать библиотеку, если она еще не существует. Флаг 'r' указывает ему заменить старые объектные файлы в библиотеке новыми объектными файлами.

После создания или изменения архива его необходимо проиндексировать. Позже этот индекс используется компилятором для ускорения поиска символов внутри библиотеки и для гарантии того, что порядок символов в библиотеке не будет иметь значения во время компиляции. Чтобы создать или обновить индекс, мы используем 'ranlib', вот так:

ranlib libutil.a

Как использовать статическую библиотеку?

Теперь настало время использовать только что созданную нами библиотеку, для этого при компиляции любой программы компилятором gcc нам понадобится флаг '-l' для указания имени нашей библиотеки и флаг '-L' чтобы указать, где находится библиотека.

E.g.

gcc main.c -lutil -L. -o main

Здесь мы помещаем имя 'util' без префикса 'lib' и суффикса '.a', компоновщик помещает это имя в конце библиотеки, так что в следующих случаях компоновщик распознает ее по этому имени, также мы определил путь или каталог, в котором находится библиотека, что означает «.» после «-L», и что это говорит о программе: «Эта библиотека находится в этом каталоге». В противном случае вы должны указать путь, по которому свернута библиотека.