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