Проблемы с переименованием и символической ссылкой boost_system на ldd
У меня есть пример приложения, которое использует общий объект boost_system. Теперь, из-за определенных сценариев, я должен поддерживать 2 разных общих объекта boost_system - один собранный с gcc, а другой с cc-файлом sun в одном каталоге - /home/mydir. Соответствующие файлы:-
libboost_system_v1.so --dependency for--- applicationv1.so
libboost_system_v2.so --dependency for--- applicationv2.so
Это связано в make-файле как.
... $(BOOST_LIB_V1) -lboost_system_v1
Поэтому я переименовал libboost_system_1_41_0.so в libboost_system_v1.so, а также удалил программную ссылку из $BOOST_HOME_V1/stage/lib. Теперь, когда я пытаюсь построить приложение - я не получаю никаких ошибок. Однако ldd не работает с:-
ldd /home/mydir/applicationv1.so
libboost_system.so.1.41.0 => not found
.....................................
.....................................
.....................................
BOOST_HOME_v1 / stage / lib (= BOOST_LIB_v1) выглядит так:
libboost_system_v1.so
libboost_system_v1.a
Я не могу понять - почему ldD все еще показывает libboost_system.so.1.41.0 как зависимость вместо libboost_system_v1.so.
Я ожидал увидеть ниже o/p, что не то, что получается:
ldd /home/mydir/applicationv1.so
libboost_system_v1.so -> /home/mydir/libboost_system_v1.so
Может кто-нибудь объяснить, если есть решение для фактического переименования общего объекта и не иметь дело с символической ссылкой по умолчанию Boost? Я проверил src / build.jam - похоже, что связывание здесь сделано - но я думал, что пока я удаляю программную ссылку, переименовываю общий объект и связываю с переименованным общим объектом в make-файле - не должно быть никаких проблем.