Я построил и установил приложение в каталоге по своему выбору, скажем, в /home/jim/usr
, поэтому файлы были помещены в три-четыре папки, все в этой папке $HOME/usr
(например, bin
, [ 114], lib
, share
и т. Д.).
Я могу нормально запустить это приложение из командной строки, добавив правильные пути к переменным окружения PATH
и LD_LIBRARY_PATH
в ~/.bashrc
.
Я добавил те же пути в файл ~/.profile
, который, если я не ошибаюсь, должен быть разобран в Ubuntu.
Не работает. Ничего такого. Куда я могу пойти оттуда?
РЕДАКТИРОВАТЬ: Я вышел из системы и перезагрузил компьютер. Оба ничего не изменили. Кажется, проблема в том, что независимо от того, что я делаю, переменная среды LD_LIBRARY_PATH не передается должным образом в Ubuntu.
Используя файлы журнала, я обнаружил, что приложение, которое я пытаюсь запустить в этом примере, не находит его зависимости, расположенные в ~/usr/lib
.
Одним из решений было бы добавить папку /home/jim/usr/lib
в файл, расположенный в /etc/ld.so.conf.d/
, но у меня нет прав администратора на этом компьютере.
Создание сценария-обертки, подобного этому, работает:
#!/bin/bash
export LD_LIBRARY_PATH=$HLOC/usr/lib
application &> $HOME/application_messages.log
, но это заставит меня обернуть все мои домашние скомпилированные приложения этим сценарием. Есть идеи?
Почему Ubuntu / Gnome удаляет переменную окружения LD_LIBRARY_PATH из моих установленных переменных? Это потому, что пытаться сделать это - плохая практика?
ОБНОВЛЕНИЕ (и решение): Как обнаружил Кристофер, на панели запуска есть сообщение об ошибке. LD_LIBRARY_PATH сбрасывается после анализа файла ~/.profile
. См. Отчет об ошибке . Кажется, пока единственное решение - создать скрипт-обертку.
Создайте для него файл:
sudo vim /etc/ld.so.conf.d/my_application.conf
И содержимое этого файла:
/home/jim/usr/lib
Сохранить. Перестройте кеш:
sudo ldconfig -v