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

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

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

8
задан 27 November 2010 в 13:27

4 ответа

Это похоже на ошибку в самом приложении. Он должен иметь скрипт-обертку, который правильно устанавливает все необходимые переменные 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
0
ответ дан 27 November 2010 в 13:27

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

0
ответ дан 27 November 2010 в 13:27

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

0
ответ дан 27 November 2010 в 13:27

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

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

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

ldconfig
0
ответ дан 27 November 2010 в 13:27

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

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