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

时间:2012-11-12 21:34:06

标签: c linux gcc debian elf

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

  

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

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

2 个答案:

答案 0 :(得分:2)

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

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

动态加载程序使用动态表加载ELF图像,查找它所需的库(使用DT_NEEDEDDT_RPATHDT_RUNPATH条目),初始化它(使用{{1 }或DT_INIT),在其中找到符号(DT_INIT_ARRAYDT_SYMTABDT_STRTAB),重新定位等等。

答案 1 :(得分:1)

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

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

$ objdump -p program