Введение / Зачем это нужно
Когда программа на 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, но это уже тема для отдельной инструкции.