引入
gcc -o test main.c sub.c -v 这样生成可执行文件弊端是,每次执行此语句main.c、sub.c都要被重新编译,完全没有必要!
应该:先编译,再链接
如何判断哪些文件被修改了:看.c和.o时间,.c时间比.o时间更晚的话,.c被修改了;.o时间比test时间更晚的话,.o文件被修改了
规则
---
当依赖文件比目标文件新时,执行命令
比如:
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -o test sub.o main.o
转化成Makefile规则如下
test:main.o sub.o
gcc -o test sub.o main.o
main.o:main.c
gcc -c -o main.o main.c
sub.o:sub.c
gcc -c -o sub.o sub.c
--------------------------------------------------------------
第一次执行make
gcc -c -o sub.o sub.c
gcc -c -o main.o main.c
gcc -o test sub.o main.o
修改main.c文件后,执行make
gcc -c -o main.o main.c
gcc -o test sub.o main.o
修改sub.c文件后,执行make
gcc -c -o sub.o sub.c
gcc -o test sub.o main.o
----------------------------------------------------扩展
修改main.c sub.c时间戳touch main.c sub.c后,执行make
gcc -c -o sub.o sub.c
gcc -c -o main.o main.c
gcc -o test sub.o main.o