程序员自我修养第三章解析(1)

本文详细分析了Linux环境下ELF文件的结构,包括.o文件、可执行文件和动态库。通过实例展示了如何从ELF头部开始,理解ELF文件的各个部分,如.e_ident、ELF头部字段的含义以及如何找到段表描述符。同时,对NULL段和.group段进行了具体的解析,阐述了如何通过readelf工具获取并解析段描述符信息,从而找到每个段在文件中的地址和虚拟地址。
摘要由CSDN通过智能技术生成

在这里插入图片描述
图3-1ELF之间关系

Linux的ELF文件包括.o文件,可执行文件,以及动态库,静态库,.o文件进一步加工可以变成.so动态库,可执行文件以及.o文件打包可以变成.a静态库
现在来分析对应.o里面的具体内容
有个模板函数
在这里插入图片描述
图3-2模板函数
这个函数是简单实现了打印对应整数功能,对这个函数进行编译得到对应的.o
gcc -m32 -c test.c
这个时候的.o叫做可重定向文件,不是可执行文件,现在先来分析一下这个可重定向文件的具体架构,晚点在进行分析其他类型,其他类型也属于ELF,结构上一样,只是由细微的不一样.

在这里插入图片描述
图3-3ELF文件架构
可以看到ELF文件主要由ELF头部以及ELF body组成,操作系统对于ELF关心的是里面的代码段以及数据段,(写完程序进行编译之后代码是放在代码段,数据是放在数据段的),因为代码段保存操作系统想要执行代码,数据段保存操作系统想要的数据,那么操作系统是怎样知道对应的段?
操作系统先找到ELF头部(这个在ELF文件的开头),然后依据头部信息,找到对应的段表描述符的位置,可以看到这个是在ELF_body里面,然后再通过描述符去找到对应段,看起来是不是很简单,就想你想找铜锣湾扛把子,先有

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值