day2:关于目标文件

来源:互联网 发布:软件测试软件 编辑:程序博客网 时间:2024/05/21 17:09

关于目标文件的一些问题

所谓目标文件,就是我们在Windows平台下开发生成的.obj文件,在linux下.o文件。在代码编译后但并未链接生成的文件。

1.目标文件的格式
   目标文件的格式和可执行文文件(也就是我们在windows下常见到的exe文件,dll文件等)结构相似,所以一般采用一种格式存储。目前Windows下主要采用PE格式,Linux下主要采用ELF,但是他们两个都有一个共同的祖先COFF(Common file format)。不光目标文件和执行文件采用一样的格式,动态链接库和静态链接库也采用的是这一格式,但稍稍注意的是静态链接库文件(也就是W下的lib和L下的.a),它是把很多目标文件集合在了一起,并加上了索引。

2.目标文件的内容
  一般目标文件是按“节”存储,有的也叫“段”存储。File Header.text     .data .bss...other sectionssection header tableString TablesSymbol Tables 主要由以下几段组成:
        代码段:主要存放源代码编译后的机器指令经常被放在代码段里,一般放在.text中。
  数据段: 主要存放全局变量和局部静态变量,扩展名为.data。
BSS段:没有初始化的全局变量和局部静态变量一般会放在这个段里。注意全局变量和局部静态变量的初始化值若为0,也会被放在BSS段里。
当然,在目标文件中不只有这几个段,还有很多段,比如存放调试器版本信息、调试信息、动态链接信息等等。
还有需要注意的是文件头(也就是File header),File header 包含了整个文件的基本属性,比如ELF文件版本、目标机器号、程序入口地址等。


  


0 0
原创粉丝点击