ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是构成众多xNIX系统的基础之一,所以作为嵌入式Linux系统乃至内核驱动程序开发人员,你最好熟悉并掌握它。换句话说,就是Windows上的EXE(Windows上其实不只EXE是可执行文件),嵌入式Linux上的ELF,它们比较相似。

  一个可执行目标文件,从原代码,要经历预处理器、编译器、汇编器和加载器,才会加载到内存中执行。而目标文件,分为可重定位文件和可执行文件,目标中分成不同的节。

            节
         
            ELF头
         
            描述字的大小、生成该文件的系统的字节顺序、帮助链接解析和解释目标文件的信息(ELF头的大小、目标文件类型--可重定位/可执行/共享/机器类型/节头部表的文件偏移/节头部表中表目大小和数量)
         
            .text
         
            编译完后的机器码
         
            .rodata
         
            只读数据,如printf中的格式串和switch中的跳转表
         
            .data
         
            已初始化的全局C变量
         
            .bss
         
            未初始化的全局C变量
         
            .symtab
         
            符号表,存放在本文件中被定义和引用的函数和全局变量(此全局变量,包含自己定义全局变量和函数,即使带有static也包含,是在符号后加了个数字,另外还包含本文件中引用的其它文件的全局变量和函数,即使这个函数没有在外面用extern引用--变量不引用则编译报错),不包含局部变量(程序运行时,在栈中生成)
         
            .rel.text
         
            可重定位的代码,一般是调用的外部函数或者引用全局的变量的指令,引用本地的不需要改
         
            .rel.data
         
            本模块定义或引用的全局变量
         
            .debug
         
            调试符号表
         
            .line
         
            原始C源程序中的等号和.text节中机器指令间的映射
         
            .strtab
         
            字符串表。包含.symtab和.debug节中的符号表,以及节头部中的节名字
         
            描述目标文件
         
            节头部表
         
            由相同大小的表目组成,每个表目描述上面的一个节
         

ELF文件格式理解的更多相关文章

  1. Linux课程实践四:ELF文件格式分析

    一.ELF文件格式概述 1. ELF文件 ELF:Executable and Linking Format,是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东 ...

  2. 实践2.4 ELF文件格式分析

    实践2.4 ELF文件格式分析 1.ELF文件头 查看/usr/include/elf.h文件: #define EI_NIDENT (16) typedef struct { unsigned ch ...

  3. C语言的本质(30)——C语言与汇编之ELF文件格式

    ELF(Executable and Linking Format)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Obj ...

  4. C语言的ELF文件格式学习

    最近的lab里面有ELF文件相关的,所以成这个几乎,学点ELF的东西. ELF,是一种文件格式.暂时,只看可执行文件的ELF文件格式. 首先,给出文件的格式的布局图: 光看这个很难理解,所以写一个小的 ...

  5. elf 文件格式探秘——程序运行背后的故事

    摘要:本文主要讲解elf文件格式,通过readelf命令结合底层的相关数据结构,讲解相关内容,分析程序运行的基本原理. 本文来源:elf 文件格式探秘——程序运行背后的故事 http://blog.c ...

  6. Linux课题实践四——ELF文件格式分析

    2.4   ELF文件格式分析 20135318 刘浩晨 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目 ...

  7. linux第三次实践:ELF文件格式分析

    linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...

  8. 20135306 2.4 ELF文件格式分析

    2.4   ELF文件格式分析 20135306 黄韧 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标 ...

  9. Linux及安全实践四——ELF文件格式分析

    Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个E ...

随机推荐

  1. Memcached 在Windows和Linux的安装和使用

    Memcached 把经常操作的数据导入到内存中 Memcached是一个高性能的支持分布式的内存存储系统,可以看成一个巨大的hash表.形式:key->value key(唯一键值string ...

  2. FPGA实战操作(2) -- PCIe总线(例程设计分析)

    1.框架总览 平台:vivado 2016.4 FPGA:A7 在实际应用中,我们几乎不可能自己去编写接口协议,所以在IP核的例程上进行修改来适用于项目是个不错的选择. 通过vivado 中有关PCI ...

  3. 二、WebSphere Application Server上部署war包并访问

    进入我们was服务器控制台之后我们直接按照下图操作: 2.选择要上传的war包,下一步 3.一直下一步,步骤4注意填好“上下文根”,然后继续下一步,直到完成. 4.点击保存到主配置 5.应用程序> ...

  4. props的写法

    简写 props: ['demo-first', 'demo-second'] 带类型 props: { 'demo-first': Number, 'demo-second': Number } 带 ...

  5. Linux版本

    1.内核:Linux内核Kernel目前最新稳定版 3.4  http://www.kernel.org/ 2.发行版本:是一些厂商将Linux系统内核与应用软件和文档包装起来,并提供一些安装界面和系 ...

  6. 阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法

    再写一个测试的方法,测试save保存的方法 需要提交事务才能保存到数据库

  7. openstack共享组件--memcache缓存(2)

    一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告 ...

  8. react中component存在性能问题

    Component存在的问题? 1). 父组件重新render(), 当前组件也会重新执行render(), 即使没有任何变化 2). 当前组件setState(), 重新执行render(), 即使 ...

  9. python高级 之(五) --- 文件操作

    文件操作 """ 在程序中操作的文件内容: 1. 读取文件中的内容 2. 向文件中写入内容 首先: 在程序中与文件建立一个通道,通过通道操作文件指针,达到所要的结果 向文 ...

  10. FTP简单搭建(一)

    一.FTP服务介绍 vsftp(very security ftp file transfer protocol 非常文件传输协议) FTP分为主动模式和被动模式. 主动模式:(不安全,传数据的端口是 ...