4

最近我得到了一个测试二进制文件。当我使用 objdump 检查它时,我观察到它包含硬编码的库路径。为什么需要像这样对路径进行硬编码?路径不应该取自 SHELL 环境变量或 -L 参数吗?

objdump -p 测试程序

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

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

1 回答 1

5

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

于 2012-07-03T07:21:07.097 回答