计算机系统软件体系结构采用一种层的结构:
“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”
“Any problem in computer science can be solved by another layer of indirection.”

1.1 目标文件的格式
可执行文件格式在linux下ELF(Executable Linkable Format), 它们都是COFF(Common file format)格式的变种。
目标文件( .o) 和执行文件的美容和结构相似,一般跟可执行文件格式一起采用一种格式存储。动态链接库(Linux的 .so)
及静态链接库( Linux的.a )文件都按照可执行文件存储。
ELF文件类型 | 说明 | 实例 |
可重定位文件 (Relocatable File) | 包含了代码和数据,可以被用来链接成可执行文件或共享目标文件,静态链接库也可以归为这一类 | Linux的 .o |
可执行文件 (Executable File) | 包含了可以直接执行的程序,它的代表就是ELF可执行文件,一般都没有扩展名 | /bin/bash 文件 |
共享目标文件 (Shared Object FIle) | 包含了代码和数据,可以在两种情况下使用。一种是链接器可以使用这种文件跟其他的可重定位文件和工项目便文件链接,产生新的目标文件。第二种是董涛链接器可以讲几个这种共享目标文件与可执行文件结合,作为进程映象的一部分来运行。 | .so |
核心转储文件 (Core Dump File) | 当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件 | core dump |