linux中的Makefile

一.Makefile的引入:

对于庞大的工程项目,比如内核源码中存在成千上万源文件,那么编译的时候,如何实现自动化编译,即源文件与头文件、动静态库之间找到彼此的依赖关系进行编译,最终生成目标文件。

针对自动化编译流程,在windows下,有现成的IDE(集成开发环境)已经做了相关的工作,比如VB,VC;VB是visual basic,VC是visual c++,都是开发平台;而在Linux下,没有类似的机制,通常需要程序员用脚本自己书写。

二.什么是makefile?什么是make?

Makefile是一种纯文本的编译脚本,在其中可以指定需要编译哪些文件,哪些先编译,哪些后编译,哪些需要重新编译,最终需要生成怎么样的应用程序。

Make是一种命令,它用来解释makefile脚本,并且根据脚本中的指定内容,进行一系列的操作。

三.Makefile优点:

(1)自动化编译,makefile中的内容一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

(2)如果一个工程有好多个源文件,如果其中一个源文件要发生变化,那么不需要编译整个工程,makefile会根据文件更新时间判断,是否需要重新编译源文件成.o文件,在生成应用程序时,只需要将所有的.o文件链接即可。

四.案例:

linux中的Makefile

使用makefile:

linux中的Makefile

接下来只需要使用make命令,即可编译:

linux中的Makefile

运行可执行程序test

linux中的Makefile

解释:

第1行:目标文件test,依赖于文件fun1.o,fun2,o,main.o

第2行:以上语句的执行过程

第3行:目标文件fun1.o,依赖于文件fun1.c

...

 

也可以在makefile文件中定义变量,方便使用:

linux中的Makefile