Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lr6.pdf
Скачиваний:
19
Добавлен:
01.04.2022
Размер:
880 Кб
Скачать
☆

./a1.out

Рисунок 10 – Результат работы программы

Для компиляции нашего основного файла "program1.c" надо сообщить компилятору, что надо использовать библиотеки. Чтобы компилятор знал, где искать библиотеки ему надо сообщить каталог, в котором они содержатся и список этих библиотек. Каталог с библиотеками указывается ключом -L, в

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

-l, после которого указывается название библиотеки без префикса lib и

окончания .a. В нашем случае этот ключ будет выглядеть, как - lMY_STATIC.

Вывод

Я научился создавать статические библиотеки, связывать их и индексировать. А также научился работать с сборщиком.

Контрольные вопросы

1. Что представляют собой библиотеки? Какие функции они

выполняют?

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

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

2. Какие виды библиотек существуют? В чем их различие?

По способу компоновки библиотеки подразделяют на архивы (статические библиотеки, static libraries) и совместно используемые библиотеки

(динамические библиотеки, shared libraries)

Статическая библиотека - это такая библиотека, которая связывается

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

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

(!).

3. Какими командами можно подключить библиотеки?

$ gcc -o myprogram myprogram.o –lmylibrary $ gcc -o myprogram myprogram.o foo1.o foo2.o $ gcc -o myprogram myprogram.o -lfoo

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

4. Как подключить только статическую библиотеку?

$ gcc -o myprogram myprogram.o –lmylibrary

5. Какие опции при подключении библиотек используются?

“-l”,”-L”,”-static”

6. Какие опции, используемые при создании статических библиотек, вы

знаете?

“r”,”x”,”rc” ,”cr” ,”crv”

Опция r создает архив, а также добавляет или заменяет файлы в существующем архиве, предписывает заменять старые версии объектных

файлов новыми, что необходимо для переупаковки библиотеки Опция x извлекает файлы из архива

Опция c позволяет создать статическую библиотеку, если та еще не существует, приостанавливает вывод сообщений о том, что создается библиотека

Опция v включает режим сообщений

7. Поясните назначение утилиты ar.

Статическая библиотека — это архив, создаваемый специальным архиватором ar из пакета GNU binutils. Архиватор объединяет несколько файлов в один с возможностью выполнения обратной процедуры. Утилита ar создает архив,

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

8. Поясните назначение утилиты ranlib

Программа ranlib добавляет индекс к архиву и получается полноценная статическая библиотека объектных файлов.

Соседние файлы в предмете Системное программирование