Установите LD_LIBRARY_PATH для приложений, запущенных с рабочего стола

8

У меня установлен Qt Creator на Ubuntu 10.04 LTS. Когда я запускаю Qt Creator с рабочего стола, я могу создать приложение, над которым я работаю, но не могу запустить или отладить его. Немного поработав, я обнаружил, что LD_LIBRARY_PATH не установлен для приложений, запускаемых с рабочего стола. Если я запускаю Qt Creator из bash (где LD_LIBRARY_PATH установлен в .bashrc), то все отлично работает и отлаживается.

Как мне установить LD_LIBRARY_PATH, чтобы он был установлен для всех запущенных приложений?

DWJ
источник

Ответы:

6

Это похоже на ошибку в самом приложении. Он должен иметь скрипт-обертку, который правильно устанавливает все необходимые LD_LIBRARY_PATHпеременные. Будьте осторожны при написании такого скрипта, так как вы не хотите иметь пустую часть LD_LIBRARY_PATHстроки между двоеточиями, которые он использует в качестве разделителей пути. Например, это может привести к неправильному пути, если переменная изначально была пустой (что привело к пустой пустой строке перед двоеточием):

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

Таким образом, при добавлении пути сначала нужно проверить пустую строку. Например, используя шелл-код:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app
Кис Кук
источник
2

Создайте новый файл /etc/ld.so.conf, содержащий:

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

Обновите кеш динамического загрузчика, выполнив:

ldconfig
наполнитель
источник
0

В дополнение к .bashrc, также установите переменную окружения в .profile. Этот файл будет обработан и загружен вашей сессией, поэтому он должен влиять на все, что работает от вашего пользователя. Кроме того: в этом файле говорится, что он не читается Bash, если он .bashrcсуществует, но, похоже, он все еще применяется (возможно, поскольку Bash наследует сеанс X с того места, где он был запущен). Впрочем, переменная в обоих файлах не помешает.

Джейкоб Педдикорд
источник
Я попытался создать .profile, но безуспешно.
dwj
Я где-то читал, что в Ubuntu (Debian?) Есть функция «безопасности», которая не позволяет установить LD_LIBRARY_PATH при запуске, поскольку она перезаписывается после загрузки .profile. Есть еще обходные пути.
AlfC
0

установите его в /etc/bash.bashrc в верхней части, чтобы внести изменения в систему при загрузке.

Руп
источник