15.1.4 Компиляция и линковка RPM программ

Индекс

15.1.4 Компиляция и линковка RPM программ

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

15.1.4.1 Подключаемые файлы
Подключаемые файлы RPM находятся в каталоге /usr/include/rpm , нужно включить этот каталог в группу каталогов, которые компилятор обходит в поисках хэдеров, с помощью опции -I :

$ gcc I/usr/include/rpm c rpm1.c

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

Для облегчения отладки, вы, возможно, захотите включить опцию -Wall (выводить все предупреждения) и -g (компилировать с отладочной информацией). Например:

$ gcc -Wall -g I/usr/include/rpm c rpm1.c

15.1.4.2 Библиотеки
Основная библиотека RPM - librpm.a , или ее разделяемая версия. Для выполнения каких-либо значимых операций нужны и другие библиотеки:

Библиотека

Использование

rpm

Основная библиотека RPM

rpmdb

Библиотека БД RPM

rpmio

Библиотека ввода/вывода

popt

Библиотека для разбора опций командной строки

Если из своей программы вы собираете rpm-пакеты, потребуется еще библиотека rpmbuild . Для компиляции и линковки простой программы потребуется отдать команду, подобную следующей:

gcc -I/usr/include/rpm -o program program.c lrpmbuild \
-lrpm -lrpmdb -lrpmio lpopt

В некоторых версиях Linux или в других ОС, возможно потребуется включить вспомогательные библиотеки:

gcc -I/usr/include/rpm -o program program.c L/opt/lib/rpm \
-lrpmbuild -lrpm -lrpmdb -lrpmio lpopt -lelf -lbz2 -lz

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

gcc -I/usr/include/rpm -o program program.c L/opt/lib/rpm \
-lrpmbuild -lrpm -lrpmdb -lrpmio lpopt -lelf -lbz2 -lz

Начиная с версии RPM 4.2 подключается только библиотека rpm . Все остальные библиотеки будут включены автоматически, если они нужны.

Далее - Получение информации о RPM-окружении
Назад - Использование библиотеки RPM
Содержание