1.欢迎来到我的酒馆
从头讲一门工具总是显得很难,先借住一個小項目學習Makefile。
tinyhttpd代码仅有502行,用来学习http server非常不错。通过它,你可以了解到http服务器的本质。
https://sourceforge.net/projects/tinyhttpd/ 解压出来
2.Makefile的由來
make+file,Makefile是一種配置文件,它由make程序執行。Makefile可以看成是加强版的shell,shell里面能用的命令,在Makefile里也可以用。Makefile书写规则,如下图:
1.target+dependencis 称为一个执行单元,下方是編譯命令
2.编译命令前,一定要摁下一个TAB键。别敲空格,没用的。。。
看看tinyhttpd的Makefile是怎么写的,没有冗余,简单明了。
-W: 关闭编译警告
-Wall: 打开编译警告
-lpthread:l指link,链接pthread库
-o: o指output,输出目标
把’-lsocket’删了,因为这个程序有点老,1999年写的,现在默认有了socket这个库。保存退出,make编译。如上面说的规则,tinyhttpd的Makefile中有3个执行单元,分别是all,httpd和clean。
先找到它的执行顺序。makefile是解释执行的,从上往下。
①:make先找到第一个规则all
②:all需要httpd,httpd有無或被修改 ?跳到③ :后面的③④⑤都不会执行。
③:httpd需要httpd.c,httpd.c有無或被修改 ? 执行⑤ :报错No to make target ‘httpd’
⑥:clean不需要别人,他就默认不会执行,除非命令行用make clean。
不知道我讲清楚执行流程没有。
有点印象的话,我们把客户端程序(simpleclient.c)也加进去编译。
3.更进一步
①②③ 的效果是一样的。都是基于上一步跟进的,编写的复杂度也增加,也越来越像你看到的牛逼的、华丽的Makefile。
————————————————
版权声明:本文为CSDN博主「坦克世界」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sfuncc/article/details/80185007