【发布时间】:2012-07-03 06:45:40
【问题描述】:
最近我得到了一个测试二进制文件。当我使用 objdump 检查它时,我观察到它包含硬编码的库路径。为什么需要像这样对路径进行硬编码?路径不应该取自 SHELL 环境变量或 -L 参数吗?
objdump -p 测试程序
输出包括共享库的硬编码路径:
....
NEEDED /home/test/lib/liba.so
NEEDED /home/test/lib/libb.so
NEEDED /home/test/lib/libc.so
....
【问题讨论】:
-
也许这是您系统上的解析路径?
-
同意 RedX。执行
strings testprog | grep /home/test时,你真的得到任何输出吗? -
@NiklasB。字符串给了我上面所有的嵌入路径。它在编译期间被硬编码在二进制文件中。
-
@Lunar:你用什么编译器?
-
@NiklasB。我从客户那里收到了那个二进制文件。他们正在使用 gcc(Arm gcc)。我认为嵌入库路径是一项标准功能。但我不明白为什么它是嵌入的。我也很想知道是哪个编译器选项导致该路径被嵌入(我无法从客户那里获得源代码)