编写MakeFile学习笔记

工作中有时需要编写Makefile,之前都是公司大牛们已经将整个工程的Makefile编写完毕,像我这样的菜鸟只是傻傻的执行make,却浑然不知其所以然。

这两天写了个小程序,有三级目录,header和cpp文件有十几个,文件夹三、四个,发现如果还是像原来一样敲命令编译程序,一来麻烦,二来代码的头文件包含、编译顺序等一系列的问题都出来了,遂打算学习写写Makefile,主要参考的资料还是在网上流传已久的学习Makefile的经典教材《跟我一起写Makefile》,现摘录并总结如下,方便以后查询。


程序的编译和链接

程序的编译链接过程大致可概括为从源文件到中间目标文件,再由中间目标文件到可执行文件。

编译阶段只检查源代码的语法,函数、变量是否被声明,若函数未被声明,编译器会给出一个警告,但可以生成目标文件,一般来说,一个源文件对应一个目标文件。

链接阶段主要链接函数和全局变量,会在所有目标文件中查找函数的实现,如果找不到,则报链接错误。链接时,可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件” (Library File),也就是.lib 文件,在UNIX下,是Archive File,也就是.a 文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值