- •Цель работы
- •Задание на лабораторную работу
- •1. Создать проект с подключением стандартной статической математической библиотеки.
- •7. Поясните назначение утилиты ar.
- •8. Поясните назначение утилиты ranlib
- •Вывод
- •Контрольные вопросы
- •2. Какие виды библиотек существуют? В чем их различие?
- •3. Какими командами можно подключить библиотеки?
- •4. Как подключить только статическую библиотеку?
- •5. Какие опции при подключении библиотек используются?
./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 добавляет индекс к архиву и получается полноценная статическая библиотека объектных файлов.
