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

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

Библиотеки — это не только внешние файлы, созданные другими, также можно создавать собственные библиотеки и использовать их в своих программах. Библиотеки могут иметь несколько разных расширений, наиболее распространенными являются: .lib, .bpl, .a, .dll, .h и еще несколько, которые уже не так распространены.

Зачем вообще использовать библиотеки

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

Как они работают

Объявление библиотек в C, должно быть сделано в начале всего нашего кода, перед объявлением любой функции или строки кода, мы должны указать компилятору, какие библиотеки использовать, чтобы знать, какие термины будут правильными в написании нашего кода и который не будет. Синтаксис следующий: #include ‹имя библиотеки› или, альтернативно, #include «имя библиотеки». В своем коде вы можете объявить столько библиотек, сколько хотите, хотя на самом деле не имеет смысла объявлять библиотеку, которую вы не собираетесь использовать в своей программе, однако этому нет предела.

Как их создать (только для Linux)

Чтобы создать статическую библиотеку, я оставлю вам командную строку, которой вы должны следовать для ее создания, если вы хотите углубиться, вы можете ввести эту ссылку, которая говорит исключительно о статических библиотеках.

1) Убедитесь, что ваши файлы .c и ваша голова находятся в одной папке.

2) создайте свои объектные файлы с помощью этой строки «gcc -Wall -pedantic -Werror -Wextra -c *.c».

3) После того, как у вас есть объектные файлы, создайте статическую библиотеку с помощью следующей команды «ar -rc libname.a *.o».

4) Используя эту строку, вы можете проверить, что все объектные файлы находятся в вашей новой библиотеке «ar -t libname.a».

5) используйте этот «ranlib libname.a».

6) «гсс-л. -lname *.c “. Узнайте больше о статических библиотеках.

Теперь давайте рассмотрим шаги по созданию динамической библиотеки.

Во-первых, вы должны иметь все файлы .C и вашу голову в одной папке.

Теперь для создания динамической библиотеки вам понадобятся эти две строчки, вы можете создать скрипт на bash или написать их прямо в терминале.

gcc -Wall -fPIC -c *.c —› создает объектные файлы с расширением «.o»

-Wall: включает предупреждения для многих распространенных ошибок и всегда должен использоваться.

-fPIC: опция включает генерацию «позиционно-независимого кода», требование для общих библиотек.

Опция -c: создает объектный файл «.o»

gcc -shared -o libname.so *.o —› Используйте файлы «.o» для создания библиотеки

-shared: создать общий объект, который затем можно связать с другими объектами для формирования исполняемого файла.

Опция -o: чтобы присвоить имя моей библиотеке, за ним следует имя «libNAME.so».

После создания библиотеки с помощью «nm -D libname.so» вы можете убедиться, что она правильно загружает файлы.

теперь, чтобы эта библиотека работала, вы должны загрузить ее в PATH, вы можете сделать это с помощью этой строки:

Теперь вы можете включить эту библиотеку в любую программу.

скомпилировать в этом формате:

gcc -Wall -pedantic -Werror -Wextra -L. 0-main.c -lname -o len

Вы можете помочь себе с этим коротким видео.

РАЗЛИЧИЯ МЕЖДУ СТАТИЧЕСКИМИ И ДИНАМИЧЕСКИМИ БИБЛИОТЕКАМИ

1- Завершение расширения: .a для статического и .so для динамического

2- Размер: статические библиотеки намного больше по размеру, потому что внешние программы встроены в исполняемый файл.

3- В статическом исполняемый файл придется перекомпилировать, если какие-либо изменения были применены к внешним файлам. В динамике нет необходимости перекомпилировать

4- Время выполнения: статическое выполняется дольше, потому что загрузка в память происходит каждый раз во время выполнения.

На этом все, надеюсь, будет полезно, прочитаем позже.

Автор: Оскар Риано Тапиас