C++ Object File (ELF/PE) 结构:理解符号表、重定位表与代码段

哈喽,各位好!今天咱们要聊点底层的东西,但是别害怕,保证有趣!我们要扒一扒C++编译后产生的“尸体”——也就是目标文件(Object File)的结构。具体来说,我们要解剖一下ELF(Linux下的常用格式)和PE(Windows下的常用格式)目标文件,重点关注符号表、重定位表和代码段这几个关键部位。 目标文件是个啥? 想象一下,你写了一堆C++代码,比如main.cpp、foo.cpp、bar.cpp。每个.cpp文件会被编译器分别编译成一个目标文件(比如main.o、foo.o、bar.o)。这些.o文件就是咱们今天要研究的对象。目标文件里包含了编译后的机器码、数据,还有一些关键的“说明书”,告诉链接器怎么把这些零散的代码拼成一个完整的程序。 目标文件的常见格式:ELF和PE ELF (Executable and Linkable Format) 和 PE (Portable Executable) 是两种常见的可执行文件、共享库和目标文件的格式。 ELF: 主要用于类Unix系统,比如Linux、BSD。 PE: 主要用于Windows。 虽然细节上有所不同,但它们的基本结构和 …