目标文件
目标文件的格式
| ELF 文件类型 | 说明 | 实例 |
|---|---|---|
| 可重定位文件(ET_REL) | 包含待链接的代码、数据和重定位信息 | Linux 的 .o |
| 可执行文件(ET_EXEC) | 可装载执行的文件类型 | 非 PIE 的 ELF 可执行程序 |
| 共享目标文件(ET_DYN) | 用于共享库,也用于 PIE 可执行程序;能否直接运行取决于文件用途和装载要求 | .so、PIE 可执行程序 |
| 核心转储文件(ET_CORE) | 记录进程崩溃时的内存与执行状态 | core 文件 |
静态库 .a 通常是多个目标文件组成的归档,不是单个 ET_REL 文件。Windows 的 .obj、.exe、.dll 仅可作用途类比,通常采用 COFF/PE 格式,不属于 ELF。
目标文件的内容

同一进程的线程共享地址空间,包括代码段、数据段、堆和 mmap 映射;每个线程有各自的执行栈、寄存器状态和 TLS 实例。线程栈仍位于共享地址空间中,并非其他线程不可访问的隔离内存。
节 Section
主要描述文件中的代码、数据、符号等如何组织,供编译器和链接器使用。