本文中提到的“动态标签”是什么意思:

gte*_*ech 2 c linux debian gcc elf

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

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

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

Emp*_*ian 5

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

dynamic tag条目d_tag,它只是一个整数标记(DT_NEEDED、等),描述表中该特定条目的DT_STRTAB含义。d_value

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