Проблемы с переименованием и символической ссылкой 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-файле - не должно быть никаких проблем.

0 ответов

Другие вопросы по тегам