makefile引入及规则

引入

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

总结:

Makefile文件帮我们实现了编译、链接问题

Makefile无处不在

 

posted @ 2022-01-01 10:48  我爱茜茜公主  阅读(62)  评论(0)    收藏  举报