Мое приложение связывает libboost_python (версия: 1.46.1) на хосте A (ОС: Ubuntu 11.04). Библиотека построена из исходного кода и имеет следующую информацию:
lrwxrwxrwx 1 henry henry 25 2011-11-10 14:33 libboost_python.so -> libboost_python.so.1.46.1
-rwxr-xr-x 1 henry henry 379867 2011-11-10 14:33 libboost_python.so.1.46.1
Когда я запускаю свое приложение на хосте B (ОС: Ubuntu 11.10), я устанавливаю libboost_python с той же версией с apt. Его информация немного отличается:
lrwxrwxrwx 1 root root 30 2011-06-03 14:54 /usr/lib/libboost_python-py27.so -> libboost_python-py27.so.1.46.1
-rw-r--r-- 1 root root 291224 2011-06-03 14:54 /usr/lib/libboost_python-py27.so.1.46.1
lrwxrwxrwx 1 root root 23 2011-11-09 04:34 /usr/lib/libboost_python.so -> libboost_python-py27.so
Возможная цель, связанная с libboost_python.so, отличается (хост B имеет «py27»). Поэтому, когда я запускаю свое приложение, возникает ошибка:
error while loading shared libraries: libboost_python.so.1.46.1: cannot open shared object file: No such file or directory
Как я могу исправить это конфликтующее имя?
вывод при запуске cmd 'readelf -d myapp':
0x00000001 (NEEDED) Shared library: [libboost_python.so.1.46.1]
0x00000001 (NEEDED) Shared library: [libboost_system.so.1.46.1]
0x00000001 (NEEDED) Shared library: [libpython2.7.so.1.0]
0x00000001 (NEEDED) Shared library: [libjuserclass.so.0]
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
Любопытно, что запись для boost не сохраняет так называемое имя, а полное имя библиотеки.