做网站 php python,网站 微信认证,成免费的crm图片,南通网站建设空间文章目录 前言一、make工具简介1.什么是make?2.如何安装make? 二、编写Makefile文件1.文件组成2.工作原理3.Makefile文件优点4.单级目录下的Makefile文件编写5.多级目录下的Makefile文件编写 总结 前言 我们刚开始在Linux系统下进行编程时#xff0c;采用的编译方法为#… 文章目录 前言一、make工具简介1.什么是make?2.如何安装make? 二、编写Makefile文件1.文件组成2.工作原理3.Makefile文件优点4.单级目录下的Makefile文件编写5.多级目录下的Makefile文件编写 总结 前言 我们刚开始在Linux系统下进行编程时采用的编译方法为将程序所引用的文件打包成静态库/共享库再使用生成的静态库/共享库与源程序一起编译成可执行文件。 然而我们发现在一个中大型的C/C工程中往往包含了成百上千个源文件。如果我们使用上述方法编译编译命令就会变得十分冗长在输入命令的过程中容易出错。即便是正确输入了编译命令在进行编译过程中也会耗费较长的编译时间。显然手动编译并不适用于大部分的Linux编程场景。 为解决以上问题我们将在本篇中学习如何编写Makefile文件完成自动化编译。 一、make工具简介 在学习编写Makefile文件之前我们需要先了解Linux系统中一个非常重要的编译命令make。
1.什么是make? make是用于自动编译链接程序的实用工具。它最主要最基本的功能就是通过makefile文件来描述源程序之间的相应关系并自动维护编译工作。 使用make工具的好处在于在编译完成之后若修改了某个源代码make只对修改后的部分进行编译其他目标文件不会更改并且会安装文件依赖性来更新执行文件。大大提高了编译效率。
2.如何安装make? 1进入root权限终端命令sudo su。 2进入更新列表终端命令apt-get update。 3Linux安装make终端命令apt-get install ubuntu-make。 4验证是否安装成功终端命令make -v显示所安装make的版本号即安装成功。
二、编写Makefile文件
1.文件组成
makefile三要素targets目标prequisities依赖command命令。每个依赖关系由一个目标文件和一组该目标所需的源文件依赖文件构成。命令则描述了如何通过这些依赖关系文件创建目标。
makefile文件格式如下 目标文件依赖文件 [tab键] gcc -o 目标文件 依赖文件
2.工作原理
目标生成检查规则中的依赖是否存在若依赖文件不存在则寻找是否有规则生成依赖文件。目标更新检查目标文件的所有依赖文件任何一个依赖文件有更新时就重新生成目标文件。
3.Makefile文件优点
1减少重复编译时间 在改动其中一个文件时能判断哪些文件被修改过只对该文件进行重新编译然后重新链接所有目标文件 大大提高了编译效率节省了编译时间。
2利于大量代码关系维护 中大型工程中源代码较多手工维护编译时间长且编译命令复杂把代码维护命令和编译命令写在makefile文件中然后再用make工具解析此文件自动执行相应命令实现高效编译。
4.单级目录下的Makefile文件编写
1第一版本通俗易懂但不通用 2第二版本变量obj类似C/C中的宏定义进行等量替换 3第三版本将依赖文件改成相应的头文件make命令在编译过程中会自动推导 4第四版本$目标文件$^所有依赖文件$第一个依赖文件 5第五版本wildcard函数查找文件下所有文件名patsubst函数查找替换 5.多级目录下的Makefile文件编写 当工程文件比较大时我们可以采用文件分类的方式将工程文件分为头文件include、源文件src、目标文件obj、可执行文件bin并在这几个文件的同级目录下编写makefile文件如下图所示。 此时对应的makefile文件通用写法如下所示。 DIR_INC ./include
DIR_SRC ./src
DIR_OBJ ./obj
DIR_BIN ./binSRC $(wildcard ${DIR_SRC}/*.c)
OBJ $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC}))TARGET mainBIN_TARGET ${DIR_BIN}/${TARGET}CC gcc
CFLAGS -g -Wall -I${DIR_INC}${BIN_TARGET}:${OBJ}$(CC) $(OBJ) -o $${DIR_OBJ}/%.o:${DIR_SRC}/%.c$(CC) $(CFLAGS) -c $ -o $clean:find ${DIR_OBJ} -name *.o -exec rm -rf {} \;总结 以上就是关于如何编写Makefile文件的所有内容希望大家阅读后都能有所收获原创不易转载请标明出处若文章出现有误之处欢迎读者留言指正批评