为什么共享库的路径在execuatble硬编码?(Why shared library path i

2019-09-19 00:51发布

最近我得到了一个测试二进制文件。 当我使用objdump的检查它,我观察到,它包括硬编码库路径。 为什么它是需要硬编码这样的路径? 如果不是路径从SHELL环境变量或-L参数,而不是采取?

objdump的-p testprog

输出包括到共享库的硬编码路径:

....
  NEEDED      /home/test/lib/liba.so
  NEEDED      /home/test/lib/libb.so
  NEEDED      /home/test/lib/libc.so
....

Answer 1:

这可能是因为这三个.so文件必须在您的测试程序是建立在主机上没有SONAME。 告诉谁建,重建人liba.so-Wl,soname,liba.so和其他两个类似的,然后重新链接主程序。



文章来源: Why shared library path is hardcoded in execuatble?
标签: c linux gcc