C++ 为什么共享库由绝对路径链接?

C++ 为什么共享库由绝对路径链接?,c++,linker,shared,ldd,C++,Linker,Shared,Ldd,我通过链接libociei.so和libcustome.so创建了一个应用程序 CC-o main.cpp../lib/libociei.so../lib/libcustome.so 并将libociei.so libcustome.so复制到/usr/lib 然后我使用ldd检查库,它显示: main ..... libcustome.so ===> /usr/lib/libcustome.so ../lib/libociei.so 为什么libociei.so

我通过链接libociei.so和libcustome.so创建了一个应用程序

CC-o main.cpp../lib/libociei.so../lib/libcustome.so

并将libociei.so libcustome.so复制到/usr/lib

然后我使用ldd检查库,它显示:

   main .....
   libcustome.so  ===>   /usr/lib/libcustome.so
   ../lib/libociei.so
为什么libociei.so没有重新定位到/usr/lib/libociei.so

ps:ld library路径是/lib:/usr/lib,我没有将../lib添加到ld library路径

如果您在linux上(比如Ubuntu),那么可能是因为您没有运行:

sudo ldconfig

在其他系统上,我不太确定。

当您使用readelf-d main时,所需的条目是否具有完整路径


我猜ldd正在默认路径中查找库。

为什么不使用
-L
-L
来指定库?这可能没有帮助(因此我不会将其作为答案发布),但您没有正确命名这些库,而且我打赌它们没有sonames。看,我不知道为什么libcustome.so是可以的?这个回答没有多大意义?我现在的建议是尝试澄清您的问题,并阅读更多关于共享对象如何工作的内容。