从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