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

标签 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]

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

最佳答案

你需要的工具是ldd,因为那些绝对路径不是ELF文件的一部分,而是由动态加载器决定的。 ldd 是环境变量的包装器,它会导致动态加载器输出将要加载(或已经加载,具体取决于您如何看待)的库的路径。

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

关于gcc - ELF文件中的共享库绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372945/

相关文章:

linux - 就BSS、DATA、TEXT段而言,a.out文件包含什么?

C++11 is_pod 与 GCC 4.6

c - 如何正确链接 libssh?

c - 哦不,不是另一个 undefined reference 问题!

c++ - 如何在不需要 stdc++ 链接的情况下将 C 程序连接到 C++ 库?

gcc - 带有自定义 gcc 安装的 LIBRARY_PATH 的优先级

c++ - g++ ld : symbol(s) not found for architecture x86_64 - without more specific error message

c++ - 错误 : need ‘typename’ before ‘A<T*>::obj’ because ‘A<T*>’ is a dependent scope

c - AARCH64 gcc#include <stdint.h> 失败

c++ - 使用静态版本的 boost::filesystem 时出现有趣的 LNK1104 错误