Управление / Имена файлов общих библиотек - PullRequest
0 голосов
/ 21 марта 2011

В настоящее время я имею дело с общими библиотеками, и есть одна вещь, которую я не совсем понимаю.Я начну с цитаты из Википедии:

Unix и Unix-подобные платформы чаще используют термин разделяемая библиотека или общий объект;следовательно, расширение .so файла чаще всего встречается для идентификации файлов совместно используемой библиотеки в таких средах - часто за ними следуют другая точка и номер версии (например, libc.so.6).

Незвучит так запутанно, а?Ну, это на самом деле.Я только что посмотрел на мой каталог / usr / lib ... множество файлов .so.Но что я не понимаю, так это: Иногда у меня есть несколько файлов для библиотеки (например, libz.so - libz.so.1 - libz.so.1.2.5) - хорошо, разные номера версий, так что нет проблем... Ну, это не проблема, но в каждом случае нескольких библиотек все файлы, кроме одного, являются просто символическими ссылками, которые указывают на один настоящий файл.Итак, мой простой вопрос: почему?Почему есть несколько файлов, почти одинаковое имя файла, а затем просто ссылка на другой файл.И это ничего, что происходит только один или два раза ...

Спасибо

1 Ответ

1 голос
/ 21 марта 2011

Причина, по которой это делается, заключается в том, что программа может зависеть от той или иной конкретной версии библиотеки.

Например, программа может сказать «Мне нужны библиотеки».Текущая версия libz.so по умолчанию будет указывать на libz.so.1.2.5.

Другая программа может сказать «Мне нужна версия 1 libz».Текущая версия по умолчанию для libz.so.1 указывает на libz.so.1.2.5.

libz.so.1.2.5 в основном существует, поэтому вы точно знаете, какую версию вы установили.Вы можете иметь несколько версий и при необходимости переключать символические ссылки, но обычно это не делается.

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