Выбор адресов секций команд и данных
В первую очередь следует выбрать адреса секций для разделяемой библиотеки.
Секции разделяемых библиотек должны располагаться с границы, кратной 1 Мб. В следующей таблице приведен список зарезервированных областей памяти (на момент написания данного руководства) и виртуальные адреса, которые могут использовать вновь создаваемые разделяемые библиотеки.
Виртуальный адрес | Описание | Маршрутное имя |
0x70000000 | Разделяемая библиотека языка C | /shlib/libc881_s |
0x70200000 | Сетевая библиотека | /shlib/libnsl_s |
0x70400000 | Системный резерв | не назначено |
0x74000000 | Для частного использования | не назначено |
. . . | ||
0x77FFFFFF |
Чем полезна такая таблица? Во-первых, разделяемая библиотека языка C и сетевая разделяемая библиотека находятся там, где это указано, и используют адреса из указанных диапазонов. Если Вы создадите разделяемую библиотеку, использующую зарезервированные адреса, Вы рискуете войти в конфликт с возможными будущими разработками.
Примечание
В принципе разные библиотеки могут использовать одни и те же виртуальные адреса, если работа с ними ведется в рамках разных процессов. Конфликты по адресам разделяемых библиотек возможны не между процессами, а только внутри процесса.
Далее, некоторые области памяти предназначены для частного использования. Если Вы разрабатываете большую систему, состоящую из множества процессов и выполняемых файлов, создание разделяемых библиотек может улучшить показатели ее работы. До тех пор, пока Вы не собираетесь создавать разделяемые библиотеки как отдельные программные продукты, Вам следует использовать "частные" области, чтобы не возникало конфликтов с коммерческими библиотеками. То же касается и случая, когда Вы будете владельцем всех выполняемых файлов, работающих с Вашей разделяемой библиотекой. Избегайте конфликта адресов!
Примечание
Если Вы собираетесь разработать коммерческую разделяемую библиотеку, настоятельно рекомендуем создать также совместимую архивную версию этой библиотеки, так как некоторые потенциальные пользователи могут найти использование разделяемой версии невыгодным, а другим нужно будет выполнять свои программы на версиях ОС UNIX, не поддерживающих разделяемых библиотек.