栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Makefile学习

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Makefile学习

为什么要用Makefile ,因为工程中的.c文件太多,因此用makefile作项目管理

uboot和linux kernel本质都是由很多c文件组成,都是由makefile来管理

有目标,有依赖,有命令

1.目标就是我们要生成的东西

2.依赖就是我们生成目标的原材料

3.命令就是加工方法

2.makefile的自动推导和通配符

%是makefile中的通配符,%.o代表所有以.o为结尾的文件

makefile是很聪明的东西,他有个依赖关系,比如说想要得到.bin文件,就必须得到.o,想要得到.o,就必须得到.S,所以,makefile就会先生成.S,然后再生成.o,最后生成.bin文件。

 如果没找到,就会报错

2.变量的定义和使用,都没有变量类型,和shell一样,都是直接定义,引用变量时加$。

3. .PHONY是什么意思

伪目标意思是这个目标并不代表一个文件,执行这个目标不是为了得到某个东西,而是单纯为了执行这条目标下面的指令。

伪目标一般都没有依赖,既然一定要执行命令了,就不要加依赖(无条件执行) 伪目标前面可以加.PHONY来声明它是伪目标。

仅仅是为了好看而已。

4.makefile中引用其他makefile

用include来引用其他makefile   include/config.mk

5.makefile补充学习

makefile前面的@表示静默执行

 前面加@表示静默执行,不把命令本身打印出来

6.makefile的几种赋值运算符

?= 表示前面变量如果已经被赋值,那么就不用执行下面的命令,没有被赋值就是这个变量没有被命令

+=就是把原来的值加到原来的值后面,类似于strcat,两段文字之间会自动加空格

=如果用该号赋值,那么这个变量的值取决于最后一次赋给他的值

:=如果用这个来赋值,就会就地直接解析

 

makefile不要求=两边有空格

 

3.makefile的环境变量

makefile用export导出的就是环境变量,一般情况下环境变量名要大写,

环境变量是工程中所有makefile可以刚享的变量,定义一个环境变量会影响别人的,导出就是

 makefile中可能有一些环境变量是makefile本身自己内部定义的,我们在make时传给环境变量的值优先级最高

编译器预定的宏 _LINE_ _FUNCTION_

4.makefile中使用通配符

1.* 表示任意字符

echo *.c

2.? 代表一个任意字符

3.[]将中括号里面的值进行匹配

4.%为规则通配符

makefile的自动变量

常见自动变量

$@  直接等于目标  all

$<    等于依赖文件的第一个   如果在规则里面用,就又变成所有的了

$^  等于依赖文件的集合

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号