Linux网络操作系统-第24节-GCC编译与Make调试
Linux 下很多软件以源码形式发布,装它们离不开编译器。这一节理解 gcc 的四步编译,再用 Makefile 管理多文件项目。

一、GCC 四阶段
- 预处理(-E):展开 #include 头文件、替换宏;
- 编译(-S):翻译成汇编代码 hello.s;
- 汇编(-c):生成二进制目标文件 hello.o;
- 链接(-o):把目标文件与库函数拼成可执行文件。
yum install -y gcc # 装编译器 vim hello.c # 写一个打印 Hello 的 C 程序 gcc -E hello.c -o hello.i # ① 只预处理 gcc -S hello.i -o hello.s # ② 生成汇编 gcc -c hello.s -o hello.o # ③ 生成目标文件 gcc hello.o -o hello # ④ 链接成可执行 gcc hello.c -o hello # 一步到位(日常用法) ./hello
二、Makefile:多文件项目的管理器
工程有十几个源文件时,逐条 gcc 又慢又容易漏。Makefile 描述「目标 ← 依赖 → 命令」:
vim Makefile # 注意:命令行前必须是 Tab 缩进 hello: hello.o util.o gcc hello.o util.o -o hello hello.o: hello.c gcc -c hello.c util.o: util.c gcc -c util.c clean: rm -f *.o hello make # 自动按依赖关系编译 make clean # 清理产物
make 的聪明之处:只重编改动过的文件——改了 util.c,hello.c 的编译结果直接复用。大工程(如内核)全靠这一机制节省时间。作业:写 main.c 与工具函数 util.c 两个文件,用 Makefile 编译通过。

