Библиотеки: что такое статическая библиотека

Какие именно библиотеки?

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

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

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

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

Создание статической библиотеки «C» с использованием «ar» и «ranlib»

Основным инструментом, используемым для создания статических библиотек, является программа под названием «ar», что означает «архиватор». Эту программу можно использовать для создания статических библиотек, изменения объектных файлов в статической библиотеке, составления списка имен объектных файлов в библиотеке и т. Д. Чтобы создать статическую библиотеку, мы можем использовать такую ​​команду:

ar rc libtest.a exa1.o exa2.o exa3.o

Эта команда создает статическую библиотеку с именем «libtest.a» и помещает в нее копии объектных файлов «exa1.o», «exa2.o» и «exa3.o». Если файл библиотеки уже существует, объектные файлы добавляются к нему или заменяются, если они более свежие, чем файлы библиотеки. Индикатор «c» сообщает ar создать библиотеку, если она еще не существует. Индикатор «r» сообщает вам, что нужно заменить самые старые объектные файлы в библиотеке новыми.

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

ranlib libtest.a

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

После того, как мы создали наш архив, мы хотим использовать его в программе. Это делается путем добавления имени библиотеки в список имен объектных файлов, переданный компоновщику, с использованием специального флага, обычно «-l». Вот пример:

gcc main.o -L. -ltest -o программа

Это создаст программу, использующую объектный файл «main.o» и любые символы, которые требуются из статической библиотеки «test». Обратите внимание, что мы опустили префикс «lib» и суффикс «.a» при упоминании библиотеки в команде компоновки. Компоновщик прикрепляет эти части обратно к имени библиотеки, чтобы создать имя файла для поиска. Обратите внимание также на использование флага '-L' - этот флаг сообщает компоновщику, что библиотеки могут быть найдены в данном каталоге ('.', Ссылаясь на текущий каталог), в дополнение к стандартным местоположениям, в которых компилятор ищет систему. библиотеки.

И это все для этого блога, спасибо за чтение, и я надеюсь, что он вам помог. Если у вас есть вопросы, напишите мне в твиттере @jcamilovillah.
Никогда не прекращайте учиться!