У меня установлен Qt Creator на Ubuntu 10.04 LTS. Когда я запускаю Qt Creator с рабочего стола, я могу создать приложение, над которым я работаю, но не могу запустить или отладить его. Немного поработав, я обнаружил, что LD_LIBRARY_PATH не установлен для приложений, запускаемых с рабочего стола. Если я запускаю Qt Creator из bash (где LD_LIBRARY_PATH установлен в .bashrc), все отлично работает и отлаживается.
Как установить LD_LIBRARY_PATH, чтобы он был установлен для всех запущенных приложений?
Это похоже на ошибку в самом приложении. Он должен иметь скрипт-обертку, который правильно устанавливает все необходимые переменные 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
установите его в /etc/bash.bashrc в верхней части, чтобы внести изменения в систему при загрузке.
В дополнение к .bashrc
также установите переменную среды в .profile
. Этот файл будет обработан и загружен вашим сеансом, поэтому он должен влиять на все, что работает от вашего пользователя. Также: этот файл говорит, что он не читается Bash, если существует .bashrc
, но, похоже, он все еще применяется (возможно, поскольку Bash наследует сеанс X, с которого он был запущен). Впрочем, переменная в обоих файлах не помешает.
Создайте новый файл /etc/ld.so.conf, содержащий:
# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #
Обновите кэш динамического загрузчика, выполнив:
ldconfig