我必须让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]
是否有任何链接器选项可以实现此目的?
答案 0 :(得分:0)
AFAIK使用绝对路径将.so
文件指定为普通输入,将导致二进制文件也使用相同的绝对路径引用.so
。
不确定如何与默认库(如libc)一起使用,但是您可以尝试将/lib/libc.so.6
添加为第一个链接器输入。
答案 1 :(得分:-1)
您想要的工具是ldd
,因为这些绝对路径不是ELF文件的一部分,而是由动态加载程序决定的。 ldd
是环境变量的包装器,它使动态加载器输出到库的路径(或者根据你看到的方式)。
当然,库解析是一项特定于系统的任务,即使是相同的发行版,您的结果也可能因安装而异。