【问题标题】:Why shared library is linked by absolute path?为什么共享库是通过绝对路径链接的?
【发布时间】:2011-04-28 23:05:31
【问题描述】:

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

CC -o main 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 库路径是 /lib:/usr/lib 我没有将 ../lib 添加到 ld 库路径

【问题讨论】:

标签: c++ linker shared ldd


【解决方案1】:

如果你使用的是 linux(比如 Ubuntu),那可能是因为你没有运行:

sudo ldconfig

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

【讨论】:

  • 不知道为什么 libcustome.so 可以?
  • 那个回应没有多大意义?我现在的建议是尝试澄清您的问题,并详细了解共享对象的工作原理。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 2018-11-06
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多