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

Прежде всего для создания собственной статической библиотеки необходимо написать её реализацию. Мы конечно же создадим библиотеку, которая будет содержать функцию вывода фразы "Привет мир!" на экран.
Создадим реализацию функции в файле 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
Привет мир!
Просмотров:   1137

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!