Почему изменения в LD_LIBRARY_PATH во время выполнения не отражаются на исполняемом файле после загрузки исполняемого файла

Я пытаюсь изменить LD_LIBRARY_PATH из моей программы на C ++. Я могу получить его значение с помощью getenv("LD_LIBRARY_PATH") и установите его значение с помощью setenv() (и я знаю, что это работает, потому что, когда я звоню getenv("LD_LIBRARY_PATH") снова я получаю обновленное значение), но изменение его значения изнутри программы не оказывает никакого влияния на него: я все еще получаю это сообщение об ошибке:

Failed to Load the shared library file

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

5

Решение

К сожалению постановка LD_LIBRARY_PATH изнутри запущенная программа не будет влиять на это. Причина этого в том, что LD_LIBRARY_PATH обрабатывается загрузчиком динамических ссылок (ld.so), который запускает вашу программу. Сама ваша программа не обрабатывается LD_LIBRARY_PATH поэтому изменение не будет иметь никакого эффекта.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]