Создание статических библиотек в С

Прежде всего для создания собственной статической библиотеки необходимо написать её реализацию. Мы конечно же создадим библиотеку, которая будет содержать функцию вывода фразы «Привет мир!» на экран.
Создадим реализацию функции в файле libhello.c:

#include <stdio.h>

void say_hello() {
    printf("Привет мир!\n");
}

Помните, что имя каждой библиотеки должно начинаться словом «lib», после которого следует собственно название библиотеки, в нашем случае — «hello».
Каждую функцию библиотеки необходимо объявить в её заголовочном файле. libhello.h:

void say_hello();

Теперь скомпилируем библиотеку:

gcc -g -c -o libhello.o libhello.c

Флаг -с сообщает компилятору, что необходимо пропустить этап компоновки (linking), а -g — сообщает о том, что отладчик — gdb.
После компиляции библиотеки будет создан объектный файл который необходимо упаковать в архив:

ar rcs libhello.a libhello.o
  • r — удалять libhello.o после добавления в архив
  • с — создавть новый архив, если существует — перезаписать.
  • s — добавить индекс объектного файла в архив

Теперь приведём пример использования данной библиотеки. Создадим файл demo.c для тестирования созданного:

#include "libhello.h"

int main(){
  say_hello();
  return 0;
}

Компилировать его необходимо явно указывая библиотеку hello:

gcc demo.c -o demo -lhello -L.

Мы не создаём объектный файл, а сразу генерируем исполняемый код. При этом указываем, что необходимо включить библиотеку hello (файл libhello.a), который находится в текущей папке.
Вывод программы у меня такой:

$ ./demo
Привет мир!

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий