ELF文件中的共享库绝对路径

时间:2017-02-21 16:34:25

标签: gcc linker ld elf toolchain

我必须让ELF文件使用库的绝对路径,而不是在默认路径(RPATH)中搜索。

这是来自readelf的结果:

readelf -d example

Dynamic section at offset 0xe28 contains 24 entries:
Tag        Type                         Name/Value
0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

但我想得到这样的东西:

readelf -d example

Dynamic section at offset 0xe28 contains 24 entries:
Tag        Type                         Name/Value
0x0000000000000001 (NEEDED)             Shared library: [/lib/libc.so.6]

是否有任何链接器选项可以实现此目的?

2 个答案:

答案 0 :(得分:0)

AFAIK使用绝对路径将.so文件指定为普通输入,将导致二进制文件也使用相同的绝对路径引用.so

不确定如何与默认库(如libc)一起使用,但是您可以尝试将/lib/libc.so.6添加为第一个链接器输入。

答案 1 :(得分:-1)

您想要的工具是ldd,因为这些绝对路径不是ELF文件的一部分,而是由动态加载程序决定的。 ldd是环境变量的包装器,它使动态加载器输出到库的路径(或者根据你看到的方式)。

当然,库解析是一项特定于系统的任务,即使是相同的发行版,您的结果也可能因安装而异。