Хорошо, если посмотреть дальше, то получается, что когда программа компилируется и связывается, компоновщик автоматически вставляет сонам всех необходимых библиотек в сам скомпилированный двоичный файл:
objdump -p ip.so | grep NEEDED
NEEDED libpcre.so.0
strings ip.so | grep pcre
libpcre.so.0
В моем случаеВ этом случае программе, о которой я говорил, требуется вышеуказанный общий объект, для которого требуется библиотека pcre с soname libpcre.so.0.Так вот где зависимость терпит неудачу.Несмотря на то, что мой новый хост имеет библиотеку libpcre
, у него другое имя (libpcre.so.1 вместо libpcre.so.0) и, следовательно, сбой.
Что было бы интересно: кто-нибудь знает, есть ли способ указать компоновщику заменить другое имя вместо того, которое указано в списке зависимостей?Очевидно, что это не будет работать большую часть времени (если имя сонама меняется, скорее всего, потому что новая версия больше не обратно совместима), но все же стоит знать, как это сделать, если это возможно.