Makefile

Makefile,第1张

1.什么是Makefile

Makefile是一个用于工程管理的文本文件,用make命令执行。

2.什么是make

make是一个执行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》命令同一进程执行

命令之间使用分号隔开,使用“\"对命令进行连接

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2990012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存