Как правильно собрать динамическую библиотеку, зависящую от других динамических библиотек (дополнительных), чтобы можно было переносить между различными компьютерами без сборки дополнительных библиотек на всех компьютерах? Является ли строгим требованием совпадение версии ядра или эту проблему можно обойти? Не уверен, что смогу найти все нужные библиотеки в виде статических (*.a).
Другими словами, есть самописная библиотека, зависящая, в частности от opencv (в общем случае и других сторонних библиотек). Переношу ее с одной Убунты 18.04 на другую. При этом посредством ldd скопировал все библиотеки, которые зависят от моей самописной. Добавляю на новый комп только те библиотеки, которых нет
lists=`ls *so*`
TARGET=/home/user/work/libs
for name in $lists ; do
res=`ldconfig -p | grep $name`
if [ -z "$res" ] ; then
echo "[+] $name"
cp $name $TARGET
else
echo "[-] $name"
fi
done
UnsatisfiedLinkError: /home/user/mylibrary/bin/mylibrary.so: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/user/libs/libopencv_imgproc.so.4.3)
Ядро у операционок различное 5.3 и 4.15. Похоже это проблема, но я не админ на целевой.
Если, я копирую все библиотеки, то в целевой ОС возникают проблемы: любая стандартная команда (ls, cat, ...) приводит к segmentation fault.
P.S. Может существует какие-то книжки или статьи по переносу, прошу порекомендовать.