Как установить переменную среды LD_LIBRARY_PATH в Linux
Сначала я выполнил команду: export LD_LIBRARY_PATH=/usr/local/lib
Тогда я открыл .bash_profile
файл: vi ~/.bash_profile
, В этом файле я положил:
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
Затем, если терминал закрыт и перезапущен, набрав echo $LD_LIBRARY_PATH
не показывает результат.
Как правильно установить путь?
12 ответов
Вы должны добавить больше информации о вашем дистрибутиве, например, в Ubuntu правильный способ сделать это - добавить кастом .conf
подать в /etc/ld.so.conf.d
, например
sudo gedit /etc/ld.so.conf.d/randomLibs.conf
внутри файла вы должны написать полный путь к каталогу, который содержит все библиотеки, которые вы хотите добавить в систему, например
/home/linux/myLocalLibs
не забудьте добавить только путь к каталогу, а не полный путь к файлу, все библиотеки внутри этого пути будут автоматически проиндексированы.
Сохранить и запустить sudo ldconfig
обновить систему с помощью этой библиотеки.
Сохранить предыдущий путь, не перезаписывать его:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/
Вы можете добавить его в ваш ~/.bashrc:
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc
Добавлять
LD_LIBRARY_PATH="/ путь / вы /want1:/ путь / вы / хотите /2"
в /etc/environment
Смотрите документацию по Ubuntu.
ИСПРАВЛЕНИЕ: Я должен взять мой собственный совет и фактически прочитать документацию. В нем говорится, что это не относится к LD_LIBRARY_PATH: поскольку Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH нельзя установить в файлах $HOME/.profile, /etc/profile и /etc/environment. Вы должны использовать /etc/ld.so.conf.d/.conf файлы конфигурации.* Таким образом, ответ user1824407 точен.
В качестве альтернативы вы можете выполнить программу с указанной библиотекой dir:
/lib/ld-linux.so.2 --library-path PATH EXECUTABLE
Файл .bash_profile
выполняется только логинами. Возможно, вам придется положить его в ~/.bashrc
или просто выйдите из системы и войдите снова.
По какой-то причине никто не упомянул тот факт, что bashrc нуждается в ресурсах после редактирования. Вы можете выйти и снова войти в систему (как упоминалось выше), но вы также можете использовать команды: source ~/.bashrc
или же . ~/.bashrc
,
Положил export LD_LIBRARY_PATH=/usr/local/lib
в ~/.bashrc
[желательно к концу сценария, чтобы избежать переопределений между ними, по умолчанию ~/.bashrc
приходит со многими if-else
заявления]
Сообщите, что всякий раз, когда вы открываете новый терминал / консоль, LD_LIBRARY_PATH
будет отражено
- Зайдите в домашнюю папку и отредактируйте.profile
Поместите следующую строку в конце
export LD_LIBRARY_PATH=<your path>
Сохранить и выйти.
Выполнить эту команду
sudo ldconfig
Вы можете попробовать добавить собственный скрипт, скажем, myenv_vars.sh
в /etc/profile.d
,
cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh
Добавьте это в пустой файл и сохраните.
export LD_LIBRARY_PATH=/usr/local/lib
Выйти и войти, LD_LIBRARY_PATH
будет установлен навсегда.
В Ubuntu 20.04 Linux это просто неочевидно и прямолинейно, как и должно быть.
Я попытаюсь сделать это простым для тех, кто рвет на себе волосы, как это было со мной в Ubuntu 20.04.3 Linux.
Начните с определения пути, по которому находится папка с файлами вашей библиотеки. В моем случае файлы * .so , с которыми я работал, находились в папке с именем libs , и путь к этой папке в моем окне Ubuntu — /usr/lib
Итак, теперь я хочу добавить путь /usr/lib в LD_LIBRARY_PATH , чтобы при запуске команды echo $LD_LIBRARY_PATH в моем терминале Ubuntu я мог видеть путь /usr/lib , как показано ниже;
Вот шаги, которые я использовал
- Откройте терминал в Ubuntu 20.04 Linux.
- Измените путь к /etc/ld.so.conf.d/ , запустив cd /etc/ld.so.conf.d/
- Создайте файл с расширением *.conf в конце с помощью текстового редактора , такого как, например, vim или gedit , в моем случае я создал его следующим образом: sudo gedit my_project_libs.conf
- Внутри файла .conf , который я создал с именем my_project_libs.conf, я добавил путь к своим библиотекам, добавив эту строку exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib
- После этого я запускаю gedit ~/.bash_profile , чтобы открыть файл ~/.bash_profile , чтобы я мог добавить в него эту строку export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib , которая включает путь к папке с моими библиотеками /usr/ lib , которую я хочу включить в LD_LIBRARY_PATH
- Я также запустил gedit ~/.bashrc , чтобы открыть файл ~/.bashrc , чтобы я мог добавить в него эту строку export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib , которая включает путь к папке с моими библиотеками /usr/lib , которая Я хочу включить в LD_LIBRARY_PATH
- Когда вы закончите добавлять строку на шаге 5, сохраните и закройте файл .
- В терминале введите следующую команду sudo ldconfig и нажмите Enter на клавиатуре. Закройте все открытые терминалы, которые вы использовали, затем откройте новый сеанс терминала и запустите echo $LD_LIBRARY_PATH. Если вы видите, что добавленный вами путь отображается обратно, значит, вы все сделали правильно.
В моем случае это то, что я вижу : /usr/lib , когда я запускаю echo $LD_LIBRARY_PATH в моем недавно открытом терминальном сеансе Ubuntu .
joseph$ echo $LD_LIBRARY_PATH
:/usr/lib
Вот как я заставил его работать на моем Ubuntu 20.04.3 Linux .
Я делаю следующее в Mint с 15 по 17, также работает на сервере Ubuntu 12.04 и выше:
sudo vi /etc/bash.bashrc
прокрутите вниз и добавьте:
export LD_LIBRARY_PATH=.
Всем пользователям добавлена переменная окружения.
Кажется, всем не хватает леса за деревьями.
Реальный ответ заключается в том, что «~/.bash_profile» по умолчанию используется только для LOGIN SHELLS.
Файл конфигурации bash, который вы, вероятно, ищете, если вы запускаете и закрываете терминалы с графического интерфейса вашего рабочего стола, — это «~/.bashrc», который является файлом по умолчанию при запуске интерактивных оболочек без входа в систему.
https://apple.stackexchange.com/questions/51036/в чем разница-между-bash-профилем-и-bashrc