Путь поиска временной библиотеки в Ubuntu - PullRequest
3 голосов
/ 10 января 2011

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

Я читал, что новые версии Ubuntu больше не поддерживают LD_LIBRARY_PATH по соображениям безопасности. Я мог бы добавить путь к /etc/ld.so.conf и запустить ldconfig, но у меня не всегда будут привилегии root в системе.

Кто-нибудь знает, как внести изменения в путь поиска библиотеки, который может сделать простой пользователь? Предположим, что достаточно часто случается так, что обновление конфигурационных файлов является последним средством.

Изменить: Вот как я тестирую, что я ожидаю увидеть и так далее: я запускаю ldd в программе и вижу libfoo.so => /some/path/to/lib/libfoo.so. Я добавляю /path/to/different/version/lib (который содержит файл с именем libfoo.so) к LD_LIBRARY_PATH и перезапускаю ldd. Путь к libfoo.so такой же, как и раньше, когда я ожидал увидеть libfoo.so => /path/to/different/version/lib/libfoo.so.

Спасибо

Andrew

1 Ответ

7 голосов
/ 10 января 2011

Вы можете использовать patchelf , чтобы изменить RPATH (путь поиска библиотеки) любого исполняемого файла.Это классная утилита, и для ее запуска не требуются особые привилегии.Чтобы настроить программу на первый поиск /opt/my-libs/lib, а затем /foo/lib, просто сделайте это:

% patchelf --set-rpath /opt/my-libs/lib:/foo/lib program
...