Linux

Как установить LD_LIBRARY_PATH в Linux: полное руководство

Гайд объясняет, как управлять путями к разделяемым библиотекам в Linux через переменную LD_LIBRARY_PATH, чтобы программы находили зависимости и запускались без ошибок.

Обновлено 27 апреля 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04+Debian 11+Fedora 36+Linux kernel 5.x+

Введение / Зачем это нужно

Переменная LD_LIBRARY_PATH сообщает динамическому линковщику, где искать разделяемые библиотеки (.so), помимо стандартных каталогов вроде /lib и /usr/lib. Это полезно, когда вы собираете или устанавливаете программы в нестандартные пути, тестируете новые версии библиотек или запускаете проприетарное ПО с «встроенными» зависимостями. После настройки приложения смогут находить нужные .so и запускаться без ошибок вроде «error while loading shared libraries».

Требования / Подготовка

Перед началом убедитесь, что у вас есть:

  • Пользователь с правами на чтение каталогов с библиотеками и возможностью использовать sudo для системных изменений.
  • Установленные утилиты ldconfig, ldd и текстовый редактор (например, nano или vim).
  • Понимание того, куда физически расположены нужные .so (обычно это /opt/.../lib, /usr/local/lib или домашний каталог проекта).

Пошаговая инструкция

Шаг 1: Проверить текущие пути поиска

Посмотрите текущее значение переменной и системные конфигурации:

echo $LD_LIBRARY_PATH
cat /etc/ld.so.conf
ls /etc/ld.so.conf.d/

Это поможет избежать дублирования и понять, какие каталоги уже участвуют в поиске.

Шаг 2: Установить переменную временно

Для текущей сессии терминала добавьте путь и проверьте результат:

export LD_LIBRARY_PATH=/opt/myapp/lib:$LD_LIBRARY_PATH
ldd /opt/myapp/bin/myprogram

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

Шаг 3: Сделать настройку постоянной для пользователя

Чтобы не вводить export при каждом входе, добавьте строку в профиль вашей оболочки. Для Bash:

echo 'export LD_LIBRARY_PATH=/opt/myapp/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

Если используете Zsh, аналогично добавьте в ~/.zshrc. Это сохранит настройку для ваших сессий и не затронет других пользователей.

Шаг 4: Настроить системные пути через ldconfig

Для глобального решения опишите каталог в конфигурации линковщика. Создайте файл в /etc/ld.so.conf.d/:

echo '/opt/myapp/lib' | sudo tee /etc/ld.so.conf.d/myapp.conf
sudo ldconfig

После этого все пользователи смогут запускать программы, зависящие от библиотек в этом каталоге, без необходимости экспортировать переменную. Приоритет всё равно определяется порядком в конфигурации и кэшем ldconfig.

Проверка результата

Убедитесь, что программа стартует и использует нужные библиотеки:

ldd /opt/myapp/bin/myprogram | grep mylib
LD_DEBUG=libs /opt/myapp/bin/myprogram 2>&1 | head -20

Отсутствие сообщений о «missing» и корректный вывод LD_DEBUG подтверждают, что линковщик находит все зависимости.

Возможные проблемы

  • Переменная не сохраняется: убедитесь, что вы отредактировали правильный профиль и применили его через source.
  • Программа всё равно не видит библиотеки: проверьте битность (x86_64 vs i386) и права доступа к .so.
  • Конфликты версий: приоритет LD_LIBRARY_PATH может привести к загрузке несовместимой версии — в таких случаях лучше настроить rpath при сборке или использовать ldconfig.
  • Потеря производительности или безопасности: широкое использование переменной может замедлить запуск и создать риск подмены библиотек — ограничивайте её применение необходимыми сценариями.

Часто задаваемые вопросы

Зачем нужна переменная LD_LIBRARY_PATH и чем она опасна?
Почему программа не видит библиотеки после установки переменной?
Как сделать настройку постоянной для всех пользователей?
Как проверить, какие библиотеки загружает программа?

Полезное

Проверить текущие пути поиска
Установить переменную временно
Сделать настройку постоянной для пользователя
Настроить системные пути через ldconfig