我必须让 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]
是否有任何链接器选项可以实现此目的?
最佳答案
你需要的工具是ldd
,因为那些绝对路径不是ELF文件的一部分,而是由动态加载器决定的。 ldd
是环境变量的包装器,它会导致动态加载器输出将要加载(或已经加载,具体取决于您如何看待)的库的路径。
当然,库解析是一项特定于系统的任务,即使是同一发行版,您的结果也可能因安装而异。
关于gcc - ELF文件中的共享库绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372945/