4. 自动化构建 - make/Makefile
在 Linux 环境下,使用 gcc 手动编译程序较为繁琐。通过编写 Makefile,可以实现自动化构建,根据文件依赖关系自动决定哪些源文件需要重新编译。
基本编译流程对比
首先创建一个简单的 C 文件并手动编译:
$ touch proc.c
$ vim proc.c
# 输入代码后保存
$ gcc -o proc proc.c
$ ./proc
hello Linux!
接着创建 Makefile 来管理编译过程:
proc: proc.c
gcc -o proc proc.c
.PHONY: clean
clean:
rm -f proc
执行 make 命令即可自动编译:
$ make
gcc -o proc proc.c
Makefile 规则详解
1. 目标与依赖
格式为 target: prerequisites。当目标文件不存在或比依赖文件旧时,执行后续命令。
proc: proc.c
gcc -o proc proc.c
2. 伪目标 (.PHONY)
clean 是一个动作而非文件名,需声明为 .PHONY 以避免冲突。
.PHONY: clean
clean:
rm -f proc
3. 自动变量
$@: 代表目标文件$^: 代表所有依赖文件$<: 代表第一个依赖文件
示例:
process: main.c process.c
gcc -o $@ $^
4. 模式规则
使用 % 通配符定义通用规则,如将 .c 编译为 .o。
%.o: %.c
gcc -c $< -o $@
5. 变量定义
使用变量提高可维护性。
bin = proc
src = proc.c
$(bin):
gcc -o
rm -f


