Путь к библиотеке LD

Я не уверен, работает ли мой LD_LIBRARY_PATH.

Я установил Qt5.2.1 в Ubuntu и попытался запустить приложение из командной строки, используя sudo ./App1. (App1 требуется доступ sudo, поэтому я выполнил этот путь)

Папка с файлами * .so Qt5.2.1/Tools/QtCreator/lib/qtcreator находится в файле LD_LIBRARY_PATH в bashrc, но я получаю следующую ошибку

]
./App1: error while loading shared libraries: libQt5Quick.so.5: cannot open shared object file: No such file or directory

Когда я скопировал все файлы Qt so из QtCreator в /usr/lib, приложение работало.

Может кто-нибудь помочь мне понять концепцию, почему она не может взять библиотеку из LD_LIBRARY_PATH, тогда как она работает с Qt, так что файлы по стандартному пути /usr/lib

Кроме того, что должно сделать это, не копируя файлы .so в /usr/lib.

1
задан 15 June 2014 в 00:14

1 ответ

Ваш пользователь LD_LIBRARY_PATH не будет, по умолчанию, наследован sudo средой. Согласно sudoers странице справочника (man sudoers):

 By default, the env_reset option is enabled.  This causes commands to be
 executed with a new, minimal environment.  On AIX (and Linux systems
 without PAM), the environment is initialized with the contents of the
 /etc/environment file.  The new environment contains the TERM, PATH,
 HOME, MAIL, SHELL, LOGNAME, USER, USERNAME and SUDO_* variables in addi‐
 tion to variables from the invoking process permitted by the env_check
 and env_keep options.  This is effectively a whitelist for environment
 variables.

Примечание, что env_keep вряд ли будет работать на LD_LIBRARY_PATH по причине, отмеченной позже в разделе:

 Note that the dynamic linker on most operating systems will remove vari‐
 ables that can control dynamic linking from the environment of setuid
 executables, including sudo.  Depending on the operating system this may
 include _RLD*, DYLD_*, LD_*, LDR_*, LIBPATH, SHLIB_PATH, and others.
 These type of variables are removed from the environment before sudo even
 begins execution and, as such, it is not possible for sudo to preserve
 them.

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

0
ответ дан 15 June 2014 в 00:14

Другие вопросы по тегам:

Похожие вопросы: