1

从http://wiki.debian.org/Multiarch/LibraryPathOverview复制:

在请求对象的(已弃用)DT_RPATH 动态标记中命名的任何目录,或者递归地,任何父对象(请注意,如果 DT_RUNPATH 也存在,则忽略 DT_RPATH)

我似乎无法在任何地方找到动态标签的定义。

4

2 回答 2

3

每个动态链接的 ELF 图像(可执行类型ET_EXEC或类型库ET_DYN)都有一个动态表(您可以通过objdump -p a.out或看到readelf -d a.out)。表中的每个条目都包含一组Elf32_DynElf64_Dyn条目,并且每个条目都有一个d_tagd_value成员。文档在这里

是条目,dynamic tagd_tag只是一个整数标记(DT_NEEDEDDT_STRTAB等),描述了d_value表中这个特定条目的 代表什么。

动态加载器使用动态表来加载 ELF 图像、查找它需要的库(使用DT_NEEDEDDT_RPATHDT_RUNPATH条目)、初始化它(使用DT_INITDT_INIT_ARRAY)、查找其中的符号(DT_SYMTAB、、、 ) DT_STRTABDT_HASH重新定位它等等。

于 2012-11-13T07:52:45.717 回答
1

它只是指动态部分中的条目(DT 可能代表动态表或其他东西)。

您可以使用以下命令查看它们:

$ objdump -p program
于 2012-11-12T21:57:51.793 回答