慢慢欣赏linux makefile学习

编译linux内核,默认不打印编译过程,但是如果export KBUILD_VERBOSE=1则打印编译过程

详见内核makefile

ifeq ($(KBUILD_VERBOSE),1)
  quiet =
  Q =
else
  quiet=quiet_
  Q = @
endif

一个典型的makefile

#赋值语句前后可以有空格
ifeq ($(KBUILD_VERBOSE),1)
  quiet =
  Q =
else
  quiet=quiet_
  Q = @
endif

CC = gcc
c_files = test1.o test2.o test.o
object_file = test

all: $(c_files)
	$(Q)$(CC) $^ -o $(object_file)
	#如下函数origin打印变量的来源,命令行还是文件,还是未定义
	#test_cmd = $(origin c_files)
#$(c_files): %o: %c
%o: %c
	$(Q)$(CC) -c $< -o $@

#clean是个伪目标,不定义成伪目标的话,如果在当前目录下存在clean文件,则该规则不执行。
.PHONY: clean
clean:
	$(Q)rm -rf $(object_file) $(c_files)

测试

[zl@cliffr test1]$ ls
Makefile  test1.c  test2.c  test.c
[zl@cliffr test1]$ make KBUILD_VERBOSE=1
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc -c test.c -o test.o
gcc test1.o test2.o test.o -o test
[zl@cliffr test1]$ make clean
rm -rf test test1.o test2.o test.o

Makefile 中:= ?= += =的区别
https://www.cnblogs.com/sky-heaven/p/6272408.html

跟我一起写 Makefile(五)
https://blog.csdn.net/haoel/article/details/2890

linux内核Makefile中的build构建机制
https://blog.csdn.net/metersun/article/details/52212842

Makefile 中@是什么意思
https://www.cnblogs.com/leaven/p/4337650.html

内核映像的形成——递归编译各对象
https://blog.csdn.net/yunsongice/article/details/6106036

Linux移植之make uImage编译过程分析
https://www.cnblogs.com/andyfly/p/9396423.html

Makefile origin 函数
http://blog.chinaunix.net/uid-22028680-id-3054167.html

make menuconfig的执行详情
https://blog.csdn.net/dfg0124/article/details/49122377

makefile中 DIR = $(CURDIR)的疑问
http://blog.sina.com.cn/s/blog_89fa41ef0100u09h.html

Linux内核Makefile分析
https://blog.csdn.net/lizuobin2/article/details/51464152

《linux 内核Makefile》之$(CURDIR)/Makefile Makefile: ;
https://blog.csdn.net/yi412/article/details/48300077

2.6.22.6版本的主目录下的Makefile 语法分析
https://blog.csdn.net/tronteng/article/details/7847415

Makefile的filter和filter-out
https://blog.csdn.net/xclshwd/article/details/102822302

Kernel顶层Makefile文件分析
https://blog.csdn.net/shan0xiao0xi/article/details/17127291

Makefile常用调试方法
https://www.cnblogs.com/LoTGu/p/5936465.html

Makefile中指定目标(MAKECMDGOALS)
https://blog.csdn.net/eddy_liu/article/details/8217835

makefile规则整理 分号的作用
https://www.cnblogs.com/doctors/p/10110729.html

Makefile静态模式 $(OBJS): ( O B J R O O T ) / (OBJ_ROOT)/%.o : (OBJROOT)/(SRC_ROOT)/%.c
https://blog.csdn.net/yyyljw/article/details/101371850

Makefile中用foreach,eval,call实现将目标文件编译到指定目录
https://my.oschina.net/hevakelcj/blog/730872

makefile的if语法
https://blog.csdn.net/u013216061/article/details/73744711

makefile下 , ^, ,@, ? , ?, ?,<, ( @ D ) , (@D), (@D),(@F)定义使用详解 作者的文章不错
https://blog.csdn.net/qq_39498080/article/details/79237260

【Makefile】Makefile中的常用函数简介
https://www.cnblogs.com/utank/p/11799202.html

linux kernel makefile中的那些小伙伴们
https://blog.csdn.net/richardysteven/article/details/52420936

Makefile中的wildcard用法
https://blog.csdn.net/qq_31811537/article/details/82892128
注意如下说法:函数“wildcard”,它的用法是:$(wildcard PATTERN…) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。

Makefile中的wildcard用法
https://blog.csdn.net/qq_31811537/article/details/82892128

聊聊Makefile中的$(addprefix)
https://blog.csdn.net/runfarther/article/details/50039023

Makefile之patsubst
https://www.cnblogs.com/geeker/p/4455538.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值