ldd上的boost_system重命名和符号链接问题

时间:2011-09-22 00:40:59

标签: gcc boost ldd

我有使用boost_system共享对象的示例应用程序。现在,由于某些情况,我必须支持2个不同的boost_system共享对象 - 一个用gcc构建,另一个用sun的cc在单个目录中构建 - / home / mydir。相应的文件是: -

libboost_system_v1.so --dependency for--- applicationv1.so
libboost_system_v2.so --dependency for--- applicationv2.so

它在makefile中链接为。

... $(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 - 看起来像是在这里完成链接 - 但我想只要我删除了softlink,重命名共享对象并与makefile中重命名的共享对象链接 - 应该没有任何问题。

0 个答案:

没有答案