linux-Makefile

本文详细介绍了Linux Makefile的使用,包括基本规则、工作原理、变量、函数及清理操作。通过实例展示了如何利用Makefile提升编译效率,如使用make-j参数并行编译,以及如何定义和使用自动变量、模式规则。还讨论了Makefile中的.PHONY伪目标和清理目标,以实现高效自动化构建和清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考学习视频:[linux从零到精通] gcc和Makefile,多文件编译神器

通配符
$@ 所有的目标文件 
$^ 所有的依赖文件 
$< 所有的依赖文件的第一个文件

在这里插入图片描述
make -j 参数加快编译效率

对于大型项目,在使用cmake控制编译时,仅仅执行make指令效率较低,使用make -j后面跟一个数字,比如make -j4 make -j6 make -j14等。

含义是 让make最多允许n个编译命令同时执行,这样可以更有效的利用CPU资源。

假设我们的系统是cpu是12核,在不影响其他工作的情况下,我们可以make -j12
将cpu资源充分利用起来,一般来说,最大并行任务数为cpu_num * 2

1. 查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
 
2. 查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc -l
 
3. 查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq
 
4. 查看CPU的主频
#cat /proc/cpuinfo |grep MHz|uniq
#以'#'开头的行表示注释
#定义变量VAR,强制赋值为app
VAR=test
#在VAR之前定义的值后面再追加app这个值,这时该变量值扩展为testapp
VAR+=app
#如果之前VAR没有被定义,则定义并使用testapp;否则使用之前的值。
VAR?=testapp

# 第一条目标为总的目标,
# 依赖可以是文件(目录)或为其他目标,依赖不是必须
# 动作可以是Linux命令,动作的那一行必须以TAB键开头

target: depend1 depend2 depend3 ...<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值