LD_LIBRARY_PATH - PullRequest
       15

LD_LIBRARY_PATH

3 голосов
/ 06 мая 2009

Могу ли я установить LD_LIBRARY_PATH для отдельного приложения? Я смотрю на сбой системного вызова, поэтому есть ли способ установить правильный путь с помощью параметра LD_LIBRARY_PATH?

Ответы [ 3 ]

11 голосов
/ 06 мая 2009

Самый простой способ - создать сценарий оболочки.

Сделайте так, чтобы скрипт оболочки экспортировал вашу новую переменную LD_LIBRARY_PATH, затем запустите ваше приложение

например. (где foo ваше приложение)

#!/bin/sh
LD_LIBRARY_PATH=some_path:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
foo
7 голосов
/ 06 мая 2009

Так же просто, как:

LD_LIBRARY_PATH=new_path:$LD_LIBRARY_PATH foo

, который работает в Bash. Я думаю , что это работает во всех производных оболочки Bourne, но я не могу гарантировать это.

Конечно, при таком подходе вы должны вводить путь каждый раз. Чтобы сделать это несколько раз, предпочтите подход Глена .

5 голосов
/ 07 мая 2009

Один элемент, о котором следует помнить: вы не можете установить LD_LIBRARY_PATH в программе и не повлиять на текущую программу. Это связано с тем, что динамический загрузчик (ld.so.1 или похожее имя) уже загружен и прочитал и обработал переменную среды перед выполнением любого кода. Вы можете установить его в среде текущего процесса, и это значение затем повлияет на любые дочерние процессы, и вы можете использовать одну из функций семейства exec() для запуска программы с установленной средой. В крайнем случае вы можете повторно запустить текущую программу, но это extreme !

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