编译、链接与装载学习笔记(二):可执行文件的文件结构

本文介绍了可执行文件格式,重点讲解了Linux下的ELF文件结构,包括文件头、段表和辅助结构。通过`objdump`和`readelf`工具,展示了如何查看ELF文件的详细信息,如ELF文件头、.text、.data、.bss、.rodata等段的作用。
摘要由CSDN通过智能技术生成

可执行文件的格式

目前主流的可执行文件格式主要分为两种:

  1. windows下的PE格式
  2. linux下的ELF格式

两种格式都是COFF格式的变种

下面接下来主要介绍ELF文件的文件结构
将使用下面两个工具查看文件结构:

  1. objdump(通用查看格式工具,具有反汇编功能)
  2. readelf (只能查看ELF文件格式,信息较为详细)

ELF文件结构

ELF文件类型:可重定位、可执行、共享目标文件、核心转储文件

  1. 可重定位文件:.o目标文件,.a静态库
  2. 可执行文件:.out可执行文件
  3. 共享目标文件:.so二进制文件
  4. 核心转储文件:一般程序崩溃的时候报错就是核心转储文件,典型的是Linux下的core dump

linux下可使用命令查看文件格式:file 文件

file demo.o
demo.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked,interpreter /lib64/l, for GNU/Linux2.6.32, 
BuildID[sha1]=3a49c2dfa1a516767e95146b666d6d444d6403b9, not stripped
file libopencv_hdf.so.3.3.1 
libopencv_hdf.so.3.3.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, 
BuildID[sha1]=8a273151900f0f70dca804faae8be408848fefd8, not stripped

linux下可以命令查看段表头对比
readelf -S -W 源文件.o
readelf -S -W 源文件.out

ELF文件的主要组成部分

  • ELF文件头:描述文件的基本属性,如ELF文件版本、目标机器型号、程序入口地址等。
  • 段表:描述包含的所有段的信息,包括段名、段的长度、在文件中的偏移、读写权限等。
  • 辅助结构:重定位表(重定位文件特有)、字符串表、符号表等。

目标文件以代码段的形式存储信息

常用的结构,常用的几个段大致为:

  • ELF文件头 在linux环境下,命令行输入readelf -h 目标文件 ,得到ELF文件头的信息
  • .text 存储函数代码段
  • .data 存储初始化
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值