Як встановити змінну середовища 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

не забудьте додати лише шлях до dir, а не повний шлях до файлу, всі вкладені файли всередині цього шляху будуть автоматично індексовані.

Збережіть і запустіть sudo ldconfigдля оновлення системи за допомогою цих ліб.


Вибачте, що не згадали про розповсюдження. Її Fedora 16
сингл

ви можете використовувати це рішення для Fedora, рішення, запропоноване Йоахімом Пілеборгом, корисно, якщо ви вирішите обмежити перегляд цих ліб до одного конкретного користувача, якщо ви хочете, щоб системна широкоформатна система повинна використовувати моє рішення. Все залежить від того, що ви шукаєте.
користувач1824407

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 = "/ шлях / ти / хочеш1: / шлях / ти / хочеш / 2"

до /etc/environment

Див. Документацію на Ubuntu .

КОРЕКЦІЯ: Я повинен приймати власну пораду і фактично прочитати документацію. У ньому йдеться про те, що це не стосується LD_LIBRARY_PATH: Оскільки Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH не можна встановлювати у файлах $ HOME / .profile, / etc / profile, а також / etc / середовищі. Потрібно використовувати /etc/ld.so.conf.d/ .conf файли конфігурації. * Отже, відповідь користувача1824407 знаходиться на місці.


Ого, я кілька разів переглянув цю сторінку і не помітив цього. Дякуємо, що помітили його та привернули до нас увагу.
Майкл Шепер

4
Убунту тут особливий випадок. Подання Ubuntu полягає в тому, що всі користувачі хочуть однакових бібліотек і що у кожній бібліотеці є лише одне місце (читайте дискусію в програмі Launchpad bug # 366728). Однак у системах дослідження чи розробки для багатьох користувачів потрібно, щоб кожен користувач мав власні версії бібліотек. Більшість дистрибутивів Linux це дозволяє і роблять це протягом багатьох років.
Йоахім Вагнер

9
Провів 4 години, намагаючись зрозуміти, чому я можу встановити PATH та PKG_CONFIG_PATH, але не LD_LIBRARY_PATH. Я навіть не можу.
Михайло Чешков

@JoachimWagner Так, це правильно, і тому conda та / або bioconda або virtenv є кращим методом виклику певної програми зі спеціальними змінними середовища. Використовуючи обкладені середовища, ненавмисне встановлення шляху LD_LIBRARY не матиме системних проблем / проблем.
Андор Кісс

23

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


Дякую Йоахіму Пілеборгу. Я перезавантажив систему, і тепер її шлях встановлений постійно.
сингха


17

Чомусь ніхто не згадував про те, що після редагування башерк повинен бути повторно встановлений. Ви можете або вийти з системи, і знову ввійти (як зазначено вище), але ви також можете використовувати команди: source ~/.bashrcабо . ~/.bashrc.


14

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

Опублікуйте, що кожного разу, коли ви відкриєте новий термінал / консоль, LD_LIBRARY_PATHбуде відображено


Вибачте, що не згадали про розповсюдження. Її Fedora 16
сингл

7
  1. Перейдіть до домашньої папки та відредагуйте .profile
  2. Поставте наступний рядок в кінці

    export LD_LIBRARY_PATH=<your path>

  3. Зберегти та вийти.

  4. Виконай цю команду

    sudo ldconfig


3

Я роблю наступне в монетному дворі 15-17, також працює на сервері ubuntu 12.04 і вище:

sudo vi /etc/bash.bashrc 

прокрутіть донизу та додайте:

export LD_LIBRARY_PATH=.

Усім користувачам додана змінна середовище.


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
Дивовижна відповідь. Найкращий вибір для експорту шляху кожного разу під час ініціалізації системи та набагато безпечніший, ніж фізичне редагування / тощо / bashrc
Йосип
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.