程序编译-汇编-链接的理解04-可执行文件概述
2017-12-18 15:21
453 查看
写在前面:
这一节主要是对于可执行目标文件格式的理解。内容:
与可重定位文件稍有不同:1.在ELF头字段给出执行程序时第一条指令的地址,在可重定位的文件中则为0
因为可重定位文件不会被执行,所以不会给出执行代码的地址
2.多了一个程序头表,也称段头表 是一个结构数组,因为可执行文件是为了装入到存储器执行的,
程序头表就说明了这些节和段的对应关系,有些节是要装入内存当中有些不用。
3.多了一个.init节 用于定义_init函数,该函数用于进行可执行目标文件执行时的初始化工作。
4.少了两个重定位节 因为无需重定位
程序头表表示如下的映射关系:
为了能执行,将相同的访问属性的节合并成段!说明每个段的属性! 比如在可执行文件中的位移,大小,在虚拟空间的位置,对其的方式,访问属性等等。说明的信息就是程序头表。
程序头表描述了可执行文件中的节与虚拟空间的存储段之间的映射关系。一个表项说明虚拟空间中一个连续的段或者一个特殊的节。
对齐方式 问题
相关文章推荐
- 代码文件-预编译-编译-汇编-链接-可执行程序
- 程序编译-汇编-链接的理解02-可重定位目标文件具体包含的信息!
- 一个简单的 C 程序文件,经过 0、编写,1、预处理,2、编译,3、链接,终于生成了一个可执行文件
- 简单汇编程序编译链接执行过程
- 程序执行期间发生了哪些事——预处理,编译,汇编,链接
- 1.预处理,生成预编译文件(.文件): Gcc –E hello.c –o hello.i 2.编译,生成汇编代码(.s文件): Gcc –S hello.i –o hello.s 3.汇编,生成目标文件(.o文件): Gcc –c hello.s –o hello.o 4.链接,生成可执行文件: linux笔记
- 程序编译-汇编-链接的理解!—03-ELF头和节头表
- 程序编译-汇编-链接的理解!
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- Linux程序编译执行原理之一:预处理-编译-汇编-链接过程分析
- 1.2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。并熟悉相关指令。
- cmd下编译执行arm汇编文件
- C/C++程序编译步骤 如何生成可执行文件
- C/C++程序编译步骤 如何生成可执行文件
- 深入理解预编译,编译,汇编,链接的过程——之预编译
- EWARM IAR5.4编译链接过程, 程序运行阶段, ICF ilink配置文件
- "Hello World " —— 深入理解程序从编译到执行
- 程序的编译链接关系及库文件编写
- 在linux中如何编译C程序,使之成为可执行文件?如何调试?
- 汇编语言入门——编辑、编译、链接、运行、调试程序【影子笨蛋苦比的摸索日记】