2010-10-22 192 views
0

我通过链接libociei.so和libcustome.so为什么共享库通过绝对路径链接?

CC -o主要的main.cpp ../lib/libociei.so ../lib/libcustome.so

和复制libociei创建一个应用程序。所以libcustome.so到/ usr/lib目录

然后我用ldd来检查库,它表明:

main ..... 
    libcustome.so ===> /usr/lib/libcustome.so 
    ../lib/libociei.so 

为什么libociei.so不搬迁到/usr/lib/libociei.so?

PS:LD库路径是/ lib目录:/ usr/lib中,我不加../lib到LD库路径

+2

为什么不使用'-L'和'-l'指定库? – 2010-10-22 03:16:31

+0

这可能没有帮助(所以我不会把它作为答案发布),但是你没有正确命名这些库,我打赌他们没有sonames。请参阅http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html – zwol 2010-10-22 03:54:00

回答

0

如果你是在Linux(Ubuntu的说),那么很可能是因为你没有不运行:

sudo ldconfig 

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

+0

我不知道为什么libcustome.so可以吗? – zhangli 2010-10-22 05:58:13

+0

这种反应没有多大意义?我现在的建议是试着澄清你的问题,并阅读更多关于共享对象是如何工作的。 – 2010-10-22 08:10:33

0

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

我的猜测是,ldd正在寻找默认路径中的库。