《程序员的自我修养——链接、装载与库》读书笔记
编译器编译源代码后产生的文件叫做目标文件。它们经过链接后可以形成库文件或者可执行文件。主流平台的可执行文件格式主要有Windows下的PE(Portable Executable)和Linux下的ELF(Executable Linkable Format),他们都是COFF(Common File Format)的变种。ELF文件标准里面把系统采用ELF格式的文件归为四类:可重定位文件(Relocatable File),可执行文件(Executable File),共享目标文件(Shared Object File)和核心转储文件(Core Dump File)。
1. 总体结构
可重定位文件(如静态链接库,Linux的.o,Windows的.obj)包含了代码和数据,可以被用来链接生成可执行文件或共享目标文件。可执行文件(如Linux的/bin/bash,Windows的.exe)包含了可以直接执行的程序。共享目标文件(如Linux的.so,Windows的.dll)包含了代码和数据,链接器可以使用这种文件跟其他的可重定位文件和共享目标文件链接,产生新的目标文件;也可以