Проблемы с переименованием и символической ссылкой - PullRequest
2 голосов
/ 22 сентября 2011

У меня есть пример приложения, которое использует общий объект 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 /этап / Библиотека.Теперь, когда я пытаюсь построить приложение - я не получаю никаких ошибок.Однако 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-файле - не должно быть никаких проблем.

...