程序生成过程
C程序从源代码到可执行文件需要经过四个阶段:预处理、编译、汇编和链接。
预处理(cpp):预处理器读取C源代码,展开所有 #include 头文件,替换 #define 宏定义,处理条件编译指令(#ifdef 等),生成 .i 后缀的纯文本中间文件。
编译(cc1):编译器将预处理后的 .i 文件翻译成汇编语言。这是最复杂的阶段,会进行词法分析、语法分析、语义分析、优化等操作,最终生成 .s 后缀的汇编文件。
汇编(as):汇编器将汇编代码翻译成机器指令,生成可重定位目标文件(.o)。该文件中包含机器代码,但其中的符号地址尚未确定,存在占位符。
链接(ld):链接器将多个 .o 文件和库文件合并,完成符号解析和重定位,生成最终的可执行文件。
链接的引入带来了两大好处:模块化(小文件可组合成大程序)和高效编译(修改单个文件只需重编译该文件)。
链接到
- 上一个知识点:无(本章第一个知识点)
- 下一个知识点:7.2 链接器的作用