Я пытаюсь изменить LD_LIBRARY_PATH
из моей программы на C ++. Я могу получить его значение с помощью getenv("LD_LIBRARY_PATH")
и установите его значение с помощью setenv()
(и я знаю, что это работает, потому что, когда я звоню getenv("LD_LIBRARY_PATH")
снова я получаю обновленное значение), но изменение его значения изнутри программы не оказывает никакого влияния на него: я все еще получаю это сообщение об ошибке:
Failed to Load the shared library file
Если я установлю значение до загрузки исполняемого файла или запуска приложения, оно будет работать нормально.
К сожалению постановка LD_LIBRARY_PATH
изнутри запущенная программа не будет влиять на это. Причина этого в том, что LD_LIBRARY_PATH
обрабатывается загрузчиком динамических ссылок (ld.so), который запускает вашу программу. Сама ваша программа не обрабатывается LD_LIBRARY_PATH
поэтому изменение не будет иметь никакого эффекта.
Других решений пока нет …