Введение / Зачем это нужно
Правильная настройка ldconfig гарантирует, что программы в Linux смогут находить нужные динамические библиотеки без ручного указания путей через LD_LIBRARY_PATH. После настройки вы сможете устанавливать и использовать сторонние или собранные из исходников библиотеки так же удобно, как и системные.
Требования / Подготовка
- Пользователь с правами
sudoили доступом к root. - Установленный пакет
glibc(ldconfig входит в его состав). - Путь к каталогу с библиотеками
.so, который вы хотите сделать доступным системно.
Шаг 1: Добавить путь к библиотеке в конфигурацию
Создайте отдельный файл конфигурации в /etc/ld.so.conf.d/, чтобы не менять системный /etc/ld.so.conf. Это считается безопасным и удобным способом.
echo "/opt/mylib/lib" | sudo tee /etc/ld.so.conf.d/mylib.conf
💡 Совет: используйте
.conf-файлы с понятными именами — это упрощает аудит и удаление путей в будущем.
Шаг 2: Обновить кэш ldconfig
После изменения конфигурации обновите кэш, чтобы ldconfig перечитал все пути и обновил внутренний индекс библиотек.
sudo ldconfig
Эта команда также обновит симлинки для совместимости (например, libc.so), если это предусмотрено конфигурацией.
Шаг 3: Проверить доступность библиотеки
Убедитесь, что библиотека появилась в кэше и может быть найдена загрузчиком.
ldconfig -p | grep mylib
Если библиотека отображается в выводе, она доступна системно. Для проверки конкретного приложения используйте:
ldd /opt/myapp/bin/myapp | grep mylib
Проверка результата
После выполнения шагов запустите программу, зависящую от добавленной библиотеки, и убедитесь, что она стартует без ошибок вида «error while loading shared libraries». Если проблема сохраняется, проверьте:
- права доступа к файлам
.so(должны быть читаемыми); - архитектуру библиотеки (должна совпадать с архитектурой системы и бинарника);
- наличие других неразрешённых зависимостей через
ldd.
Возможные проблемы
- Библиотека не появляется в кэше — убедитесь, что путь в
.conf-файле указан верно и заканчивается без лишних пробелов. Проверьте, что каталог содержит файлы.so. - Ошибки при запуске ldconfig — возможны, если указаны недоступные или пустые пути. Запустите
sudo ldconfig -v 2>&1 | less, чтобы увидеть подробности обрабатываемых каталогов. - Конфликты версий — при наличии нескольких версий одной библиотеки загрузчик выберет ту, которая встречается первой в порядке обхода конфигурации и кэша. При необходимости скорректируйте порядок или используйте явные пути через
LD_LIBRARY_PATHтолько для конкретного запуска.