Динамически слинкованный бинарник не содержит код библиотек внутри — при запуске загрузчик находит .so-файлы по путям из кэша. ldd, ldconfig и LD_PRELOAD управляют этим процессом, пригождаются при error while loading shared libraries.

# какие .so нужны бинарнику и откуда они реально берутся
ldd /usr/bin/nginx

# обновить кэш путей после установки новой библиотеки в нестандартный путь
ldconfig
ldconfig -p | grep libssl   # проверить, что библиотека в кэше

# подменить библиотеку на лету, без пересборки бинарника
LD_PRELOAD=/opt/libs/libfake.so ./app

LD_PRELOAD удобен для отладки и быстрых хаков без правки исходников, но тем же механизмом пользуются руткиты — лишняя строка в выводе ldd повод проверить /etc/ld.so.preload.

#linux #debugging #sysadmin