Использование ldconfig в Linux - PullRequest
17 голосов
/ 03 октября 2008

Допустим, я добавил библиотеку foo.so.1.1.1 в путь, включенный в /etc/ld.so.conf Когда я запускаю ldconfig в системе, я получаю ссылки foo.so.1.1 и foo.so.1 на foo.so.1.1.1

Как изменить поведение, чтобы получить ссылку foo.so на foo.so.1.1.1?

Ответы [ 2 ]

25 голосов
/ 03 октября 2008

ldconfig просматривает все общие объекты, которые находит, чтобы найти сонаму. Затем он создает ссылку, используя это имя в качестве имени ссылки. Общепринято (но далеко не повсеместно сделано), что soname - это имя и основная версия библиотеки, поэтому ваша библиотека foo.so.1.1 будет иметь сонам foo.so.1, а ldconfig создаст ссылку с таким названием.

Ни одна часть системы времени выполнения не ищет и не знает ничего о имени foo.so. Это используется, когда вы связываете свои программы с библиотекой. Нет смысла иметь эту ссылку, если у вас также нет всех остальных файлов разработки (заголовков и т. Д.) Для библиотеки, поэтому нет смысла в ldconfig автоматически создавать ее. А поскольку имя ссылки для использования - это всего лишь другое соглашение, и в этом случае оно вообще не сохраняется в файле, ldconfig не может узнать, какое имя создать.

Обычно это создается вручную, в цели установки Makefile; когда библиотека упакована для дистрибутива linux, ссылка обычно находится в пакете -dev вместе с файлами заголовков.

4 голосов
/ 03 октября 2008

Просто создайте символическую ссылку самостоятельно:

ln -s /usr/lib/foo.so.1.1.1 /usr/lib/foo.so

Обратите внимание, что для того, чтобы приложения могли использовать библиотеки таким образом, они должны быть явно связаны с неверсионным общим объектом. IE: это механизм, позволяющий полностью обойти систему сопоставления версий динамического загрузчика.

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