Skip to content

Home Программирование Библиотеки и заголовочные файлы
Библиотеки и заголовочные файлы

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

Библиотеки и заголовочные файлы

Библиотека (library) — это набор соединенных определенным образом объектных файлов. Библиотеки подключаются к программе на стадии компоновки. Функция printf о, например, реализована в стандартной библиотеке языка С, которая автоматически подключается к программе, когда компоновка осуществляется посредством gcc.

Чтобы подключить библиотеку к программе, нужно передать компоновщику опцию -1, указав после нее (можно без разделяющего пробела) имя библиотеки. Если, например, к программе необходимо подключить библиотеку mylibrary, то для осуществления компоновки следует задать такую команду:

$ gcc -о myprogram myprogram.o -lmylibrary

Чаще всего файлы библиотек располагаются в специальных каталогах (/lib, /usr/lib, /usr/local/lib и т. п.). Если же требуется подключить библиотеку из другого места, то при компоновке следует указать опцию -l, после которой (можно без разделяющего пробела) указывается нужный каталог. Таким образом, при необходимости подключения библиотеки mylibrary, находящейся в каталоге /usr/lib/particular, для выполнения компоновки указывают такую команду:

$ gcc -о myprogram myprogram.o -L/usr/lib/particular -lmylibrary

Следует отметить, что имена файлов библиотек обычно начинаются с префикса lib. Имя библиотеки получается из имени файла отбрасыванием префикса lib и расширения. Если, например, файл библиотеки имеет имя libmylibrary.so, то сама библиотека будет называться mylibrary.

Библиотеки подразделяются на две категории:

  1. статические (архивы);
  2. совместно используемые (динамические).

Статические библиотеки (static libraries) создаются программой аг. Файлы статических библиотек имеют расширение .а. Если, например, статическая библиотека foo (представленная файлом libfoo.a) создана из двух объектных файлов fool.o и foo2.o, то следующие две команды будут эквивалентны:

$ gcc -о myprogram myprogram.o fool.o foo2.o $ gcc -о myprogram myprogram.o -lfoo

Совместно используемые библиотеки (shared libraries) создаются компоновщиком при вызове gcc с опцией -shared и имеют расширение .so. Совместно используемые библиотеки не помещают свой код непосредственно в программу, а лишь создают специальные ссылки. Поэтому любая программа, скомпонованная с динамической библиотекой, при запуске требует наличия данной библиотеки в системе.

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

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top