Как установить переменную среды LD_LIBRARY_PATH в Linux

213

Сначала я выполнил команду: 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ничего не отображается.

Как установить путь навсегда?

Сингха
источник
9
Указав это очевидное здесь ... Если вы просто хотите , чтобы исправить то , что вы сделали, добавить $, напримерexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie
11
просто беги sudo ldconfigпосле этого
Necktwi
это может быть глупо, но не так ли $ source ~/.bash_profile? Я склонен забывать это. А потом , как @neckTwi сказал запустить LDCONFIG
Ashley

Ответы:

208

Вы должны добавить больше информации о вашем дистрибутиве, например, в Ubuntu, правильный способ сделать это , например, добавить пользовательский .confфайл /etc/ld.so.conf.d, например

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

внутри файла вы должны написать полный путь к каталогу, который содержит все библиотеки, которые вы хотите добавить в систему, например

/home/linux/myLocalLibs

не забудьте добавить только путь к каталогу, а не полный путь к файлу, все библиотеки внутри этого пути будут автоматически проиндексированы.

Сохраните и запустите, sudo ldconfigчтобы обновить систему с помощью этой библиотеки.

user1824407
источник
Извините, что не упомянул дистрибутив. Его Fedora 16
Сингха
вы можете использовать это решение для Fedora, решение, предложенное Joachim Pileborg, это полезно, если вы решите ограничить просмотр этих библиотек одним конкретным пользователем, если вы хотите, чтобы общесистемная библиотека должна использовать мое решение. Все зависит от того, что вы ищете.
user1824407
11
Это действительно правильный путь? Предположим, у вас есть несколько пользователей, создающих локальные библиотеки, и вы добавили их обоих в /etc/ld.so.conf.d. Теперь пользователь A может связываться с локальными библиотеками пользователя B. Не хорошо.
ergosys
/usr/local/libобычно уже там, так что нет необходимости редактировать какие-либо файлы, просто sudo ldconfig.
nyuszika7h
1
Странно, это сработало со всеми вами, ребята, однако это не сработало для меня, пока export LD_LIBRARY_PATH ....способ работает !!
Бухгалтер م
106

Сохранить предыдущий путь, не перезаписывать его:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

Вы можете добавить его в ваш ~ / .bashrc:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc
Ариэль Монако
источник
36

Добавить

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 точен.

MrUser
источник
Вау, я посмотрел эту страницу несколько раз и упустил это из виду. Спасибо, что заметили это и обратили на это наше внимание.
Майкл Шепер
4
Ubuntu - это особый случай здесь. Ubuntu считает, что все пользователи хотят иметь одинаковые библиотеки и что для каждой библиотеки есть только одно место (см. Обсуждение в Launchpad bug # 366728). Однако в многопользовательских системах исследований или разработок вы хотите, чтобы у каждого пользователя была возможность иметь свои собственные версии библиотек. Большинство дистрибутивов Linux позволяют это и делают это в течение многих лет.
Иоахим Вагнер,
9
Потратил 4 часа, пытаясь понять, почему я могу установить PATH и PKG_CONFIG_PATH, но не LD_LIBRARY_PATH. Я даже не могу.
Михаил Чешков
@JoachimWagner Да, это правильно, и почему conda и / или bioconda или virtenv в настоящее время являются предпочтительным методом вызова конкретной программы со специальными переменными среды. При использовании инкапсулированных сред непреднамеренная установка пути LD_LIBRARY не будет иметь системных проблем / проблем.
Андор Кисс
23

Файл .bash_profileвыполняется только по логинам. Вам может понадобиться вставить его ~/.bashrcили просто выйти и снова войти в систему.

Какой-то программист чувак
источник
Спасибо, Иоахим Пилеборг. Я перезагрузил систему, и теперь ее путь установлен навсегда.
Сингха
21

В качестве альтернативы вы можете выполнить программу с указанной библиотекой dir:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

Узнайте больше здесь .

K15.Multik
источник
2
Мне тоже
помогли
17

По какой-то причине никто не упомянул тот факт, что bashrc нуждается в ресурсах после редактирования. Вы можете выйти и снова войти в систему (как упомянуто выше), но вы также можете использовать команды: source ~/.bashrcили . ~/.bashrc.

nbroeking
источник
14

Помещенный export LD_LIBRARY_PATH=/usr/local/libв ~/.bashrc[желательно в конце сценария , чтобы избежать каких - либо переопределение между ними, по умолчанию ~/.bashrcпоставляется с большим количеством if-elseзаявлений]

Сообщите, что всякий раз, когда вы открываете новый терминал / консоль, LD_LIBRARY_PATHбудет отображаться

Anshul
источник
Извините, что не упомянул дистрибутив. Его Fedora 16
Сингха
7
  1. Зайдите в домашнюю папку и отредактируйте .profile
  2. Поместите следующую строку в конце

    export LD_LIBRARY_PATH=<your path>

  3. Сохранить и выйти.

  4. Выполнить эту команду

    sudo ldconfig

singingsingh
источник
3

Я делаю следующее в Mint 15-17, также работает на сервере Ubuntu 12.04 и выше:

sudo vi /etc/bash.bashrc 

прокрутите вниз и добавьте:

export LD_LIBRARY_PATH=.

Всем пользователям добавлена ​​переменная среды.

Johnnyb
источник
3

Вы можете попробовать добавить собственный скрипт, скажем, 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будут установлены постоянно.

Метузаэль Мурму
источник
1
Потрясающий ответ. Лучший выбор для меня - экспортировать путь каждый раз во время инициализации системы и гораздо безопаснее, чем физически редактировать / etc / bashrc
Joseph