我有使用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中重命名的共享对象链接 - 应该没有任何问题。