从http://wiki.debian.org/Multiarch/LibraryPathOverview复制:
在请求对象的(已弃用)DT_RPATH 动态标记中命名的任何目录,或者递归地,任何父对象(请注意,如果 DT_RUNPATH 也存在,则忽略 DT_RPATH)
我似乎无法在任何地方找到动态标签的定义。
每个动态链接的 ELF 图像(可执行类型ET_EXEC
或类型库ET_DYN
)都有一个动态表(您可以通过objdump -p a.out
或看到readelf -d a.out
)。表中的每个条目都包含一组Elf32_Dyn
或Elf64_Dyn
条目,并且每个条目都有一个d_tag
和d_value
成员。文档在这里。
是条目,dynamic tag
它d_tag
只是一个整数标记(DT_NEEDED
、DT_STRTAB
等),描述了d_value
表中这个特定条目的 代表什么。
动态加载器使用动态表来加载 ELF 图像、查找它需要的库(使用DT_NEEDED
和DT_RPATH
或DT_RUNPATH
条目)、初始化它(使用DT_INIT
或DT_INIT_ARRAY
)、查找其中的符号(DT_SYMTAB
、、、 ) DT_STRTAB
、DT_HASH
重新定位它等等。
它只是指动态部分中的条目(DT 可能代表动态表或其他东西)。
您可以使用以下命令查看它们:
$ objdump -p program