Makefile是一个用于工程管理的文本文件,用make命令执行。
2.什么是makemake是一个执行makefile的工具,是一种解析器,当执行makefile时,make解析器会分析makefile中的依赖关系,通过依赖关系从而去执行程序,完成对整个项目的编译。
3.makefile的理论基础面向依赖的思想:
编译代码的四个过程:预处理>>>编译>>>汇编>>>链接
得到.elf的可执行文件>>>依赖---****.o---依赖---***.s---依赖---***.i---依赖---***.c
4.makefile的工作过程源文件>>>编译>>>目标文件>>>链接>>>可执行文件
例:hello.c>>>>hello.o>>>hello
makefile编译源文件本质上可一步生成可执行文件,但分为两步,先生成.o文件再生成可执行文件,因为当在多文件编译时,文件数量较多时,修改一个.c文件,所有文件都需要重新生成.o文件,这样下来会浪费时间,而分为两步先生成.o文件时,当想修改一个文件时,可对该文件执行生成.o文件,通过链接再到makefile中,可以节省时间。
5.makefile文件例:
all:student(:表示依赖关系,student为目标文件)
student:main.o student.o
gcc main.o studnet.o -o student(必须用tab键进行缩进)
student.o:student.c
gcc -c student.c -o student.o
main.o:main.c
gcc -c main.c -o main.o
clean:
rm *.o student
当执行make命令时会对所有.c文件执行生成.o文件,然后再生成目标文件。想要执行所有程序编译时,直接执行./student命令。
6.makefile的基本语法构成makefile的基本语法构:
1.规则 2.变量 3.条件执行 4.函数 5.文件包含 6.注释
6.1规则的构成1.makefile的规则由三部分组成:1.目标 2.目标依赖 3.命令
2.语法格式
目标:依赖
shell命令
例:main.o:main.c
gcc -c main.c -o main.o
注意事项:
命令必须以tab开头,一般时shell命令。
一个目标可以没有依赖,仅实现某种 *** 作。
一个目标可以没有命令,仅描述某种依赖关系。
一个规则中必须有一个目标。
3.目标详解
1》默认目标
一个makefile中有多个目标,一般选择第一个为默认目标,因此make时一般默认寻找第一个目标执行,也可以“make 目标名”进行执行。
2》多目标
一个规则中可以有多个目标,多个目标具有相同的命令和以来文件。
3》多规则目标
多个规则可以是同一个目标,make在解析时会将多个规则的依赖文件合并。
4》目标依赖
文件时间戳,根据时间戳来判断目标依赖文件是否更新
5》命令
1.命令的组成
shell命令,tab开头
2.命令的执行
每条命令make会开一个进程
每条命令执行完,make会检测每条命令的返回码
若返回成功,make会继续执行下一条命令
若返回错误,make会终止执行当前规则,并退出
3》并发执行命令
make -j4 开辟4个线程
time make-j4 显示make执行的时间
4》命令同一进程执行
命令之间使用分号隔开,使用“\"对命令进行连接
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)