我是靠谱客的博主 傲娇金鱼,最近开发中收集的这篇文章主要介绍linux elf 加载位置,ELF可执行文件的哪些部分被加载到内存中,在哪里?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过运行“ objdump -h myexe”或“ readelf -S myexe”之类的命令,您可以对可执行文件中的所有部分获得非常好的了解。

.interp部分包含动态加载程序的名称,该名称将用于动态链接此对象中的符号。.dynamic节是对程序头的精炼,其格式易于动态加载程序读取。(因此,它具有指向所有其他部分的指针。)

.got(全局偏移表)和.plt(过程链接表)是由动态链接器操纵的两个主要结构。.got是变量的间接表,.plt是函数的间接表。每个可执行文件或库(称为“共享库”)都有其自己的.got和.plt,这些是该共享库所引用的符号的表,这些表实际上包含在其他共享库中。

.dynsyn包含有关共享库中符号的所有信息(定义的符号和需要引用的外部符号。).dynsyn不包含实际的符号名称。这些包含在.dynstr中,而.dynsyn具有指向.dynstr的指针。.gnu.hash是用于按名称快速查找符号的哈希表。它还仅包含指针(指向.dynstr的指针和用于创建存储桶链的指针。)

当共享对象取消引用某个符号“ foo”时,动态链接程序必须在要链接的所有动态对象中查找“ foo”,以找出哪个对象包含要查找的“ foo”(然后是相对的)。动态链接器通过搜索所有链接的共享库的.gnu.hash节(或在.hash节中查找没有.gnu的旧共享库)来实现此目的。哈希部分。)一旦在链接的共享库中找到正确的地址,就会将其放入共享库的.got或.plt中。

最后

以上就是傲娇金鱼为你收集整理的linux elf 加载位置,ELF可执行文件的哪些部分被加载到内存中,在哪里?的全部内容,希望文章能够帮你解决linux elf 加载位置,ELF可执行文件的哪些部分被加载到内存中,在哪里?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部