Изобретать колесо заново? Нет-нет-нет…
Это пустая трата времени и энергии, то же самое происходит и с компьютерным кодом.

Что такое библиотеки кода?

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

Для чего они полезны?

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

Различные типы библиотек кода.

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

Как создать код для статических библиотек.

Прежде всего, вам нужно определить, какие программы вы собираетесь использовать в будущем, или, может быть, в вашей команде есть пара программ, которые вы собираетесь использовать для запуска нового проекта.

1 . Файлы и программы. Важно собрать все функции файла C, которые мы собираемся сохранить в нашей библиотеке. Эти файлы C уже содержат нашу программу для выполнения определенного действия, в этом случае мы собираемся сохранить программу, которая печатает алфавит в нижнем регистре (a, z), и другую, которая печатает цифры de. (0, 9).

example > ls -1
print_alphabet.c
print_digits.c
header.h
example > cat header.h
#ifndef HEADER_FILE
#define header.h
void _print_alphabet(void);
void _print_digits(void);

#endif

Ранее мы также создали файл header.h, в котором будут собраны все прототипы функций.

2 . Создайте объектные файлы. Теперь нам нужно, чтобы все наши функции были написаны в объектном коде (также называемом машинным языком). поэтому для этого шага мы компилируем все наши программы на C до стадии ассемблера в процессе компиляции.

example > #gcc comand to compile our .c files and create the object files
example > gcc -c *.c
example > #ls command to show the .o files created
example > ls *.o
print_alphabet.o  print_digits.o

3 . Создайте библиотеку. ar — это команда, которая позволяет нам создать библиотеку. в этом примере мы создадим библиотеку с именем libstatic.a и включим все объектные файлы в наш рабочий каталог. *.о

4 . Подтвердить. Мы можем проверить, включены ли наши объектные файлы в нашу библиотеку, следующим образом:

example > nm libstatic.a
print_alphabet.o:
0000000000000000 T _print_alphabet

print_digits.o:
0000000000000000 T _print_digits

5 . Тестирование. Чтобы не создавать новый файл main.c, который будет точкой входа в нашу новую программу, задачу или проект. Основная функция будет скомпилирована со всем объектным кодом, включенным в нашу библиотеку (libstatic.a). На этом шаге не учитывается ни префикс lib, ни расширение .a. (lstatic). затем мы можем выполнить нашу основную программу с помощью ./ .

example > cat main.c
#include "header.h"

int main(void)
{
    _print_alphabet()
    return (0);
}
example > gcc main.c -L -lstatic -o main
example > ./main
abcdefghijklmnopqrstuvwxyz

таким образом мы завершаем создание статической библиотеки.

источник: https://docencia.ac.upc.edu/FIB/USO/Bibliografia/unix-c-libraries.html#what_is_a_library