Операционная система UNIX. Руководство программиста

     

Библиотеки объектных файлов


В ОС UNIX объектные файлы часто объединяют в архивы (библиотеки); по соглашению, имена библиотек имеют расширение .a. Например, в библиотеке libc.a хранятся объектные файлы системных вызовов, описанных в разделе 2 Справочника программиста, а также функций (именно функций, а не макросов), описанных в подразделах 3S и 3C раздела 3. Как правило, библиотека libc.a находится в каталоге /lib. Кроме /lib, часто используется каталог /usr/lib, куда помещают прикладные библиотеки.

Во время редактирования связей в выполняемый файл подгружаются копии объектных модулей из архива. Если редактирование связей выполняется по команде cc, требуемые модули по умолчанию отыскиваются в библиотеке libc.a. Если нужно, чтобы поиск производился в библиотеке libбибл.a, отличной от просматриваемой по умолчанию, следует явно указать нужную библиотеку с помощью опции -lбибл. Например, если Ваша программа использует для управления экраном функции из пакета curses(3X), указание опции

-lcurses

приведет к тому, что редактор связей будет просматривать библиотеки /lib/libcurses.a или /usr/lib/libcurses.a и использовать для разрешения ссылок в Вашей программе ту из них, которую найдет первой.

Чтобы изменить порядок просмотра архивных библиотек, можно использовать опцию -Lкаталог. Если в командной строке опция -L

указана перед опцией -l, то редактор связей сначала будет искать указанную в опции -l архивную библиотеку в заданном каталоге, а уже затем в /lib и /usr/lib. Это особенно удобно при тестировании новой версии функции, уже существующей в стандартном архиве. Использование различных версий библиотек возможно, поскольку, разрешив однажды ссылку, редактор связей прекращает дальнейший поиск. Именно поэтому опция -L должна предшествовать опции -l в командной строке.



Содержание раздела