При сборке совместно используемой библиотеки в CentOS генерируется lib.so с неудовлетворёнными зависимостями
Занимаюсь разработкой в CentOS приложения и совместно используемой библиотеки для него с подключением стороннего SDK. В какой-то момент приложение перестало запускаться с ошибкой, что не может найти требуемые зависимости. При этом в качестве зависимости указывает версии .so, которых в принципе нет в системе. Т.е. не до конца понятно, откуда они могли подцепиться.
Вызов ldd на библиотеке даёт следующий вывод:
linux-vdso.so.1 (0x00007ffc80753000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f395f5d5000)
libbio_sdk.so => project/common_libs/libbio_sdk.so (0x00007f395f1c6000)
libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f395ef91000)
libz.so.1 => /lib64/libz.so.1 (0x00007f395ed79000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f395eb59000)
libtbb.so.2 => project/common_libs/libtbb.so.2 (0x00007f395e91a000)
libtbbmalloc.so.2 => project/common_libs/libtbbmalloc.so.2 (0x00007f395e6dd000)
libtbbmalloc_proxy.so.2 => project/common_libs/libtbbmalloc_proxy.so.2 (0x00007f395e4d9000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f395e144000)
libm.so.6 => /lib64/libm.so.6 (0x00007f395ddc2000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f395dbaa000)
libc.so.6 => /lib64/libc.so.6 (0x00007f395d7e5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f396211f000)
libopencv_imgproc.so.405 => not found
libopencv_core.so.405 => not found
libopencv_img_hash.so.405 => not found
libsodium.so.23 => not found
libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007f395d57c000)
libxxhash.so.0.8.0 => project/common_libs/libxxhash.so.0.8.0 (0x00007f395d36e000)
libopencv_imgcodecs.so.405 => not found
libonnxruntime.so.1.13.1 => project/common_libs/libonnxruntime.so.1.13.1 (0x00007f395c47a000)
libjsoncpp.so.24 => not found
librt.so.1 => /lib64/librt.so.1 (0x00007f395c272000)
При этом в project/common_libs лежат актуальные версии .so:
libopencv_imgproc.so.4.5.5
libopencv_core.so.4.5.5
libopencv_img_hash.so.4.5.5
libsodium.so.23.3.0
libopencv_imgcodecs.so.4.5.5
libjsoncpp.so.1.9.4
Upd. Как выяснилось, проблема была в либах самого SDK, что он распространяется только как инсталлируемый пакет и не предусматривает распаковки и использования либ как есть. Помог сбор недостающих зависимостей в скрипте и создания симлинков на имеющиеся в SDK пакеты. Плюс проход по всем либам и правки rpath через:
patchelf --set-rpath '$ORIGIN' lib_name.so