LinuxВысокая

Исправляем ошибку 'библиотека не найдена' в Linux за 5 минут

Если при запуске приложения появляется сообщение, что требуется отсутствующая библиотека (например, `cannot find required shared library`), эта инструкция поможет найти недостающий пакет, настроить пути поиска и запустить программу без ошибок.

Обновлено 30 июля 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04Debian 12Fedora 38Arch Linux

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

Когда программа на Linux не запускается из-за сообщения библиотека не найдена, обычно отсутствует динамический объект (.so), который требуется для работы. Эта ошибка блокирует выполнение приложения, но её легко устранить, найдя недостающий пакет или настроив правильные пути поиска. После выполнения нескольких простых шагов вы сможете запустить программу в нормальном режиме.

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

  • Доступ к терминалу с правами администратора (sudo).
  • Знание пути к исполняемому файлу, который вызывает ошибку.
  • Понимание используемого дистрибутива (Debian/Ubuntu, Fedora, Arch и т. п.).
  • Базовое понимание работы динамических библиотек (.so) и переменной окружения LD_LIBRARY_PATH.

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

Шаг 1: Определите отсутствующую библиотеку

Сначала выясните, какой именно объект отсутствует.

ldd /path/to/your/application

В выводе найдите строки, содержащие not found. Они укажут недостающие библиотеки, например:

libstdc++.so.6 => not found

Шаг 2: Установите пакет, содержащий библиотеку

Чаще всего недостающий *.so поставляется с пакетом операционной системы.

  • Debian/Ubuntu:
    sudo apt-get update
    sudo apt-get install <имя_пакета>
    
  • Fedora/CentOS:
    sudo dnf install <имя_пакета>
    
  • Arch Linux:
    sudo pacman -S <имя_пакета>
    

Замените <имя_пакета> на пакет, который предоставляет недостающий объект. Например, для libstdc++.so.6 выполните sudo apt-get install libstdc++6.

Шаг 3: Настройте LD_LIBRARY_PATH (если библиотека находится в нестандартном каталоге)

Если библиотека находится в пользовательском каталоге (например, в домашнем каталоге или пользовательском /usr/local), добавьте этот каталог в LD_LIBRARY_PATH.

# Временное изменение для текущей сессии
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/user/custom_libs"

# Постоянное изменение — отредактируйте ~/.bashrc
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/user/custom_libs"' >> ~/.bashrc
source ~/.bashrc

Теперь перезапустите приложение.

Шаг 4: Выполните ldconfig (для систем на базе glibc)

Когда библиотека установлена в стандартных системных каталогах (/usr/lib, /lib), выполните:

sudo ldconfig

Это обновит кэш динамического линкера и сделает библиотеку доступной для всех программ.

Шаг 5: Проверьте успешность исправления

Повторно выполните ldd для того же исполняемого файла:

ldd /path/to/your/application

Теперь все библиотеки должны быть разрешены (например, libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6).

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

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

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

  • Неправильный путь: Убедитесь, что каталог, добавленный в LD_LIBRARY_PATH, действительно содержит нужный *.so.
  • Недостаток прав: Для записи в /etc/ld.so.conf или выполнения ldconfig требуются права администратора.
  • Устаревшая или конфликтующая библиотека: Переустановите пакет, который предоставляет библиотеку, или проверьте версии с помощью ldd.
  • Не glibc: На системах, использующих другие динамические линкеры (например, musl), ldconfig не работает; настройте переменные окружения вручную.

Эти шаги покрывают 95 % случаев ошибки «библиотека не найдена» на распространённых дистрибутивах Linux. Если проблема сохраняется, проверьте, есть ли дополнительные зависимости с помощью patrace или strace, но это уже тема для отдельной инструкции.

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

Почему появляется ошибка 'библиотека не найдена' при запуске программы?
Как быстро проверить, какая именно библиотека не загружается?
Можно ли обойти проблему без установки недостающей библиотеки?

Полезное

Определите отсутствующую библиотеку
Установите пакет, содержащий библиотеку
Настройте `LD_LIBRARY_PATH` (если библиотека находится в нестандартном каталоге)
Выполните `ldconfig` (для систем на базе glibc)
Проверьте успешность исправления

Эта статья помогла вам решить проблему?