Модернизация библиотек


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

Если вы увидите сообщение

Incompatible library version (Несовместимая версия библиотеки)

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

Самая последняя версия библиотек может быть найдена FTP-серверах Linux. На sunsite.unc.edu они расположены в /pub/Linux/GCC. Файлы "версии" (``release'') должны описывать, какие файлы вам необходимо скачать, и как их инсталлировать. Кратко, вы должны иметь файлы image-version.tar.gz и inc-version.tar.gz, где версия указывает версию инсталлируемых библиотек, например 4.4.1. (прим. переводчика: На момент перевода книги последняя версия была 5.3.9.) Это зазипованные tar-файлы. Файлы образов содержат образы инсталлируемых библиотек в /lib and /usr/lib. Файл inc содержит include-файлы для инсталляции в /usr/include.

Файл release-version.tar.gz об'ясняет инсталляционную процедуру в деталях (конкретные инструкции для конкретных версий отличаются). В общем случае вы должны инсталлировать библиотечные .a и .sa файлы в /usr/lib. Эти библиотеки используются на этапе компиляции.

Дополнительно, разделяемая библиотека образов файлов libc.so.version инсталлируется в /lib. Это разделяемые библиотеки образов загружаются во время выполнения использующими их программами. Каждая библиотека имеет символическую связь, использующую старшее число версии библиотеки в /lib.

Например, библиотека libc версия 4.4.1 имеет старшую цифру версии 4. Файл, содержащий библиотеку - libc.so.4.4.1. Символическая связь с именем libc.so.4, указывающая на этот файл, также в /lib. Вы должны изменить эту символическую связь, когда модифицируете библиотеки. Например, когда идет смена версий, вы должны изменить символическую связь файла libc.so.4 на новую версию.

Важное замечание! Надо менять символическую связь за один шаг, как показано ниже. Если вы каким-то образом удалили символическую связь libc.so.4 тогда программы, которые зависят от этой связи (включая базовые утилиты вроде ls и cat) перестанут работать. Используйте следующую команду для обновления символической связи libc.so.4, чтобы она указывала на файл libc.so.4.4.1:

# ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4

Вы должны также изменить символическую связь libm.so.version таким же манером. Если вы переходите на отличную (от прежней) версию библиотек, замените имена вышеупомянутых файлов. Пояснения к версии библиотеки должны прояснить детали. (Дополнительную информацию про символические связи смотрите в Разделе 3.10).



Содержание раздела