Вопрос

Какое место лучше всего настроить для конкретного приложения LD_LIBRARY_PATH переменная в Солярисе?Как

LD_LIBRARY_PATH

переменная работа?

В настоящее время мы настроили его в .kshrc, но разным приложениям нужны разные версии платформы обмена сообщениями, но эти приложения работают под одним и тем же использованием, и, следовательно, им потребуются разные версии LD_LIBRARY_PATH, и где, по вашему мнению, лучше всего установить эту переменную?

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

Это было полезно?

Решение

Обычно у меня есть только сценарий оболочки, который запускает приложение.В сценарии оболочки я бы установил для LD_LIBRARY_PATH то значение, которое мне нужно для этого приложения, а затем сценарий запустил бы это приложение.Если сделать это таким образом, путь будет установлен только для этого приложения.

Другие советы

Вы можете найти формальное описание LD_LIBRARY_PATH на странице руководства «ld.so.1», т.е. запустите «man ld.so.1».Он также описывает некоторые другие переменные, которые учитываются компоновщиком среды выполнения.

В дополнение к LD_LIBRARY_PATH, исполняемые файлы и общие библиотеки также могут иметь встроенный путь поиска библиотек.Если вы запускаете приложение, которое вы связали самостоятельно, вы можете использовать опцию ld -R, чтобы установить встроенный путь (и Sun CC, и gcc имеют опции, позволяющие сделать одно и то же).Это может позволить вам избежать использования LD_LIBRARY_PATH в первую очередь.

Владр, Аланк прав.

Не рекомендуется устанавливать LD_LIBRARY_PATH в Solaris.Совсем.

Если вам нужно испечь определенную runpath в вашей библиотеке или исполняемое файл, то вам следует использовать флаг -R для линкера.Если построить с GCC, то используйте -WL, RPATH (я думаю).

Если вам нужно сделать это для шага после сборки (например, потому что вам не хватает источника для перекомпиляции), то Elfedit (1) вам очень поможет.Это задокументировано в Manpage, а также в руководстве Linker+Libraries at http://docs.oracle.com/cd/E26502_01/html/E26507/index.html

Ответ crle самый правильный.На Солярисе LD_LIBRARY_PATH не следует использовать.Вместо этого используйте crle.Чтобы просмотреть текущие пути, просто запустите «crle».Чтобы обновить список, используйте crle -u -l /path/to/your/lib/directory-u нужен для записи изменений в конфигурацию системы, иначе изменение будет временным.Дополнительные параметры см. на странице руководства.

Только что обнаружил случай, когда глобальный LD_LIBRARY_PATH не вступает в силу, мне пришлось обернуть скрипт и установить LD_LIBRARY_PATH перед приложением.crle — хорошее глобальное решение, если вы установили много библиотек в /opt/csw/lib через pkgutil из blastwave.

Вы можете проверить свой файл .profile или .profile.user. Для него будет закомментированная запись. Его не рекомендуется использовать, поскольку он сломан. Вам следует создавать двоичные файлы, передавая значения флагам, а не используя переменную.

Вы можете использовать команду crle:

crle -l /путь/к/вашей/библиотеке/файлу

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top