Я бы просто закодировал оболочку оболочки, которая соответствующим образом устанавливает LD_LIBRARY_PATH перед exec-ингом двоичного исполняемого файла ELF. Это обычная практика (большинство дистрибутивов делают это для firefox)
- personBasile Starynkevitch  schedule12.10.2013
comment
привет, Basile, спасибо за правильный ответ. Я пытаюсь написать оболочку оболочки, как вы сказали, но проблема в том, что мне нужно запустить скрипт как . filename.sh (в терминале) то работает только путь экспорта. если я попытаюсь запустить свое приложение при запуске системы, я не смогу добиться того же.
- personThiyagarajan  schedule14.10.2013
comment
Нет, просто chmod a+x filename.sh, поместите filename.sh в какой-нибудь каталог в вашем PATH, и вы сможете запускать его просто как filename.sh - personBasile Starynkevitch  schedule14.10.2013
comment
Я запускаю свое приложение при запуске системы с помощью application.sh, который выполняет имя файла.sh (скрипт оболочки для установки пути), но он не работает, путь не установлен
- personThiyagarajan  schedule14.10.2013
comment
Затем используйте полный путь, например, например. $HOME/bin/filename.sh или /usr/local/bin/filename.sh. Загляните внутрь firefox или mozilla ; это вообще скрипт оболочки....
- personBasile Starynkevitch  schedule14.10.2013
К сожалению, установка LD_LIBRARY_PATH из работающей программы не повлияет на это. Причина этого в том, что LD_LIBRARY_PATH обрабатывается загрузчиком динамических ссылок (ld.so), который является программой, запускающей вашу программу. Сама ваша программа не обрабатывает LD_LIBRARY_PATH, поэтому ее изменение не будет иметь никакого эффекта.
personNildramschedule12.10.2013
comment
Изменение LD_LIBRARY_PATH не имеет никакого эффекта, за исключением случаев, когда программа вызывается после dlopen для загрузки плагина.
- personBasile Starynkevitch; 12.10.2013
comment
Согласовано. Любые дочерние процессы (исходного процесса) унаследуют изменение в LD_LIBRARY_PATH, сделанное в этом исходном процессе. Таким образом, установка LD_LIBRARY_PATH в вашей программе, затем разветвление и уничтожение родителя должны поставить вас туда, где (я полагаю) вы хотите быть с точки зрения пути загрузки.
- personNildram; 12.10.2013
LD_LIBRARY_PATH
передexec
-ингом двоичного исполняемого файла ELF. Это обычная практика (большинство дистрибутивов делают это дляfirefox
) - person Basile Starynkevitch   schedule 12.10.2013chmod a+x filename.sh
, поместитеfilename.sh
в какой-нибудь каталог в вашемPATH
, и вы сможете запускать его просто какfilename.sh
- person Basile Starynkevitch   schedule 14.10.2013$HOME/bin/filename.sh
или/usr/local/bin/filename.sh
. Загляните внутрьfirefox
илиmozilla
; это вообще скрипт оболочки.... - person Basile Starynkevitch   schedule 14.10.2013