目标文件ELF
2015-06-18 16:24
197 查看
目标文件ELF(Executable Linkable Format)
可执行文件:主流上有两种,PE 和 ELF 。目标文件就是.o文件,它和可执行文件有相似几乎相同的文件结构,所以我们可以将他们两个看成是一种类型的文件,其实库文件就是.o文件,这足以说明它和可执行文件的关系。
ELF文件类型 说明 示例
可重定位文件 主要包含代码和数据,静态库也可以包含到这一类。 linux ->.o windos->.obj
可执行文件 就是可执行文件,没有扩展名 /bin/bash 文件 exe文件
共享目标文件 连接器可以使用,动态链接库的实现 linux->.so 文件 DLL
核心转储文件 当进程终止时可以将进程的地址空间内容等信息转移到核心转储文件 core dump
目标文件的结构:
目标文件中一般以段 或者 节来存放信息。大体上由四个部分。
头文件部分,文本段,数据段,BSS段,只读数据段,注释信息段,堆栈段。
现在来逐一解析这些段:
头文件:
目标文件的头文件包含有,系统平台信息,硬件信息,环境信息,函数的借口入口等最重要的时还包含一个名叫“段表”的东西。段表记录了目标文件中的各个段信息。
text , rel.text , data, bss , rodata ,comment , not-GNU-stack,shstrtab ,symtab,strtab 这些段信息。
可以通过readelf -S XXX.o 来查看这些东西。
文本段:
就是存放代码的段,一般以ASCII的形式来存放代码,使用gcc -s XXX.o 可以反汇编代码。
数据段:
存放已经声明并且初始化过的数据,全局静态变量,局部静态变量,函数内的数据不会在这里边,一般在函数运行时才会生成在函数栈上。全局变量未初始化
或者初始化为0,则不再数据段中。
BSS段:
存放未初始化的全局静态变量和局部静态变量,同时未初始化的全局变量也不会在BSS段存放而是作为一种符号的存在,被放在符号表中。
comment(注释表):
用来存放我们所写的注释。
堆栈段:
提示这个可执行文件的堆栈,一般来说堆栈应该是可重入的,
其他段:
debug 调试信息,dynamic 动态链接信息,HASH 哈希表,line调试的行号表还有符号表等等。
可执行文件:主流上有两种,PE 和 ELF 。目标文件就是.o文件,它和可执行文件有相似几乎相同的文件结构,所以我们可以将他们两个看成是一种类型的文件,其实库文件就是.o文件,这足以说明它和可执行文件的关系。
ELF文件类型 说明 示例
可重定位文件 主要包含代码和数据,静态库也可以包含到这一类。 linux ->.o windos->.obj
可执行文件 就是可执行文件,没有扩展名 /bin/bash 文件 exe文件
共享目标文件 连接器可以使用,动态链接库的实现 linux->.so 文件 DLL
核心转储文件 当进程终止时可以将进程的地址空间内容等信息转移到核心转储文件 core dump
目标文件的结构:
目标文件中一般以段 或者 节来存放信息。大体上由四个部分。
头文件部分,文本段,数据段,BSS段,只读数据段,注释信息段,堆栈段。
现在来逐一解析这些段:
头文件:
目标文件的头文件包含有,系统平台信息,硬件信息,环境信息,函数的借口入口等最重要的时还包含一个名叫“段表”的东西。段表记录了目标文件中的各个段信息。
text , rel.text , data, bss , rodata ,comment , not-GNU-stack,shstrtab ,symtab,strtab 这些段信息。
可以通过readelf -S XXX.o 来查看这些东西。
文本段:
就是存放代码的段,一般以ASCII的形式来存放代码,使用gcc -s XXX.o 可以反汇编代码。
数据段:
存放已经声明并且初始化过的数据,全局静态变量,局部静态变量,函数内的数据不会在这里边,一般在函数运行时才会生成在函数栈上。全局变量未初始化
或者初始化为0,则不再数据段中。
BSS段:
存放未初始化的全局静态变量和局部静态变量,同时未初始化的全局变量也不会在BSS段存放而是作为一种符号的存在,被放在符号表中。
comment(注释表):
用来存放我们所写的注释。
堆栈段:
提示这个可执行文件的堆栈,一般来说堆栈应该是可重入的,
其他段:
debug 调试信息,dynamic 动态链接信息,HASH 哈希表,line调试的行号表还有符号表等等。
相关文章推荐
- 在桌面版 Ubuntu 中安装 Unity Tweak Tool
- 目标文件ELF
- 反射当中配置呢文件的练习
- 现货黄金亚欧美开盘时间
- 火狐浏览器
- 【抓包工具】fiddler4
- sshfs 通过ssh 挂载远程目录
- 如何找回Win7丢失的搜索功能以便快速查找文件
- 学习方法
- adobe flash builder 4.6安装EGit
- 孪生素数
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 删除Eclipse多余的工作空间
- 在CSDN上看到的一个过滤方法,感觉还不错
- Spring定时任务的几种实现
- a:link,a:visited,a:hover,a:active
- opencv 一个简单的视频播放器设置
- nginx安装过程,报错处理:make[1]: *** [objs/addon/src/bson.o] Error 1
- 第一次使用这种博客
- 工业串口和网络软件通讯平台(SuperIO 2.0)发布