8.4. Сборка совместно используемых библиотек

8.4. Сборка совместно используемых библиотек

Если вы разобрались с концепцией имен soname, все остальное просто. Достаточно следовать нескольким несложным правилам, которые перечислены ниже.

• Собирайте свой исходный код с указанием флага -fPIC для gcc. В результате сгенерируется независимый от места расположения код, который можно компоновать и загружать по любому адресу[13].

• Не используйте опцию компилятора -fomit-frame-pointer. Библиотеки по-прежнему будут работать, но отладчики станут бесполезными. Если в библиотеке будет найдена ошибка, пользователь не сможет осуществить обратную трассировку ошибки в коде.

• При компоновке библиотеки используйте gcc вместо ld. Компилятору С известно, как вызывать загрузчик для правильной компоновки, к тому же нет никакой гарантии, что интерфейс для ld останется неизменным.

• При компоновке библиотеки не забывайте предоставлять имя soname. Для этого используется специальная опция компилятора -Wl. Для сборки своей библиотеки используйте команду

gcc -shared -Wl, -soname, sonamelibname filelist liblist

где soname — имя soname, libname — имя библиотеки, включая полное имя версии, например, libc.so.5.3.12, filelist — список объектных файлов, которые нужно разместить в библиотеке, a liblist — список других библиотек, предоставляющих символы, к которым будет получать доступ эта библиотека. Последний элемент очень легко пропустить, поскольку без него библиотека будет работать в системе, в которой она создана, но может не работать в других ситуациях. Практически для любой библиотеки в список следует включать библиотеку С, поместив -lс в конце списка.

Чтобы создать файл libfоо.so.1.0.1 с soname-именем libfоо.so.1 из объектных файлов fоо.о и bar.о, используйте следующую команду:

gcc -shared -Wl,-soname,libfoo.so.1 -о libfoo.so.1.0.1 foo.o bar.о -lc

• He разбивайте на полосы библиотеку, если только не сталкиваетесь с окружением, где пространство ограничено. Разбитые на полосы библиотеки будут функционировать, но будут иметь такие же основные недостатки, что и библиотеки, собранные из объектных файлов, скомпилированных с -fomit-frame-pointer.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Совместно используемые обработчики

Из книги автора

Совместно используемые обработчики Совместно используемые (shared) обработчики выполняются практически так же, как и не совместно используемые. Существует, однако, три главных отличия.• Флаг SA_SHIRQ должен быть установлен в параметре flags при вызове функции


8.2. Совместно используемые библиотеки

Из книги автора

8.2. Совместно используемые библиотеки Совместно используемые, или разделяемые, библиотеки обладают рядом преимуществ по сравнению со статическими библиотеками.• Linux разделяет используемую для кода исполняемого файла память между всеми процессами, которые совместно


8.3. Разработка совместно используемых библиотек

Из книги автора

8.3. Разработка совместно используемых библиотек Создание совместно используемых библиотек не намного труднее разработки обычных статических библиотек. Существует лишь несколько ограничений, но с ними очень легко справиться. Однако совместно используемым библиотекам


8.5. Инсталляция совместно используемых библиотек

Из книги автора

8.5. Инсталляция совместно используемых библиотек Программа ldconfig выполняет всю рутинную работу по инсталляции совместно используемых библиотек. Вам всего лишь нужно получить файлы и запустить ldconfig. Выполните описанные ниже шаги.1. Скопируйте совместно используемую


8.6. Работа с совместно используемыми библиотеками

Из книги автора

8.6. Работа с совместно используемыми библиотеками Самый легкий способ работы с совместно используемыми библиотеками — игнорировать тот факт, что она совместная. Компилятор С автоматически задействует совместно используемые библиотеки вместо статических, если ему явно


Форматы данных, используемых при создании Web-узла

Из книги автора

Форматы данных, используемых при создании Web-узла Несмотря на наличие специализированных инструментальных средств, необходимо знать форматы основных данных, применяемых при создании Web-узлов. Как правило, основное содержимое Web-узла составляют статические Web-страницы,


2.3.2. Совместно используемые библиотеки

Из книги автора

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


2.3.5. Преимущества и недостатки библиотек

Из книги автора

2.3.5. Преимущества и недостатки библиотек Познакомившись со статическими архивами и совместно используемыми библиотеками. читатели, очевидно, задумались: какие же из них лучше использовать? Есть несколько важных моментов, о которых следует помнить.Большим преимуществом


5.1. Совместно используемая память

Из книги автора

5.1. Совместно используемая память Простейшим способом взаимодействия процессов является совместный доступ к общей области памяти. Это выглядит так, как если бы два или более процесса вызвали функцию malloc() и получили указатели на один и тот же блок памяти. Когда один из


18.5.3. Использование команды ls совместно с циклом for

Из книги автора

18.5.3. Использование команды ls совместно с циклом for Этот цикл оценивает команду ls интерпретатора shell и отображает сведения о файлах текущего каталога.$ pg forls#!/bin/sh# forlsfor loop in `ls` doecho $LOOP done$


Замечания о формулировках заданий и используемых в них данных

Из книги автора

Замечания о формулировках заданий и используемых в них данных Если о типе исходных или результирующих числовых данных в задании ничего не сказано, то предполагаются вещественные данные. Исключение составляет группы заданий Dynamic и Tree (а также ObjDyn и ObjTree), в которой все


Потребители и производители повторно используемых программ

Из книги автора

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


Форматы для распространения повторно используемых компонентов

Из книги автора

Форматы для распространения повторно используемых компонентов Еще одной задачей, охватывающей как технические, так и организационные проблемы, является выбор представления для распространения: исходный текст или двоичный формат? Это спорный вопрос, и мы ограничимся