编译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