Linux新手入门:GNU工具链实战笔记(从“啥都不懂”到“能打能修”)
一、编译工具链:代码到可执行程序的“工业流水线”编译是将人类可读的C代码转换为计算机可执行的二进制指令的过程。GNU编译器套件(GCC)通过预处理→编译→汇编→链接四阶段流水线实现这一转换,每个阶段均有明确的功能边界与技术实现。 1.1 预处理阶段:代码的文本转换与宏展开预处理(Preprocessing)由cpp(C Preprocessor)完成,核心任务是文本级别的代码转换,为后续编译阶段提供“干净”的输入。 关键操作与技术细节 头文件包含(#include):通过递归展开头文件内容(如#include 会插入标准库头文件的完整内容),解决代码复用问题。现代编译器(如GCC)采用“头文件缓存”优化,避免重复解析。 宏替换(#define):文本替换(如#define MAX 100将所有MAX替换为100),支持带参数的宏(如#define SQUARE(x) ((x)*(x)))和条件编译(如#ifdef DEBUG)。 行控制(#line):修改编译器报告的行号与文件名(常用于生成代码的工具链)。 技术验证:通过gcc -E hello.c -o...