04--目标文件的格式

2020-10-27  本文已影响0人  修_远

[TOC]

一、ELF文件格式

1、什么是目标文件

  1. 编译器编译源代码后生成的文件叫做目标文件
  2. 目标文件从结构上讲,他是已经编译后的可执行文件
  3. 还没有经过链接的过程
  4. 可能有些符号或有些地址还没有被调整
  5. 本身就是按照可执行文件格式存储的,只是跟真正的可执行文件在结构上稍有不同

2、怎么去了解目标文件

  1. 目标文件里面到底存放的是什么?
  2. 源代码经过编译后是怎么存储的?

二、目标文件格式

1、可执行文件

其他的

2、动态链接库和静态链接库

除了可执行文件是按照可执行文件格式存储

这两个链接库也都是按照可执行文件的格式存储的,在不同操作系统上,具体存储方式上有细微的差异性

3、ELF文件类型

ELF 文件类型 说明 实例
可重定位文件(Reloatable File) 这类文件包含了代码和数据,可以被用来连接成可执行文件或共享目标文件,静态链接库也可以归为这一类 Linux的 .o、Windows的 .obj
可执行文件(Executable File) 可以直接执行的程序,代表是ELF可执行文件,没有扩展名 比如 /bin/bash 文件、windows的 .exe
共享目标文件(Shareed Object File) 包含代码和数据。使用情况有两种,一种是链接器可以用它跟其他的可重定位文件和共享目标文件链接,产生新的目标问加你。第二种是动态链接器可以将几个这种共享目标文件与可执行文件结合,作为进程映像的一部分运行起来 Linux的.so,如/lib/glibc-2.5.so、Windows的DLL
核心转存文件(Core Dump File) 当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转存到核心转存文件 Linux下的 core dump
image.png

【tips】目标文件与可执行文件格式的小历史

上一篇 下一篇

猜你喜欢

热点阅读