Linux 的顶层 Makefile 和 uboot 的顶层 Makefile 非常相似,因为 uboot 参考了 Linux,前 602行几乎一样,所以前面部分我们大致看一下就行了。
版本号
MAKEFLAGS变量
MAKEFLAGS += -rR --include-dir=$(CURDIR)
命令输出
- Linux 编译的时候也可以通过“V=1”来输出完整的命令,这个和 uboot 一样
实现源码
69 ifeq ("$(origin V)", "command line") 70 KBUILD_VERBOSE = $(V) 71 endif 72 ifndef KBUILD_VERBOSE 73 KBUILD_VERBOSE = 0 74 endif 75 76 ifeq ($(KBUILD_VERBOSE),1) 77 quiet = 78 Q = 79 else 80 quiet=quiet_ 81 Q = @ 82 endif
静默输出
- Linux 编译的时候使用“make -s”就可实现静默编译,编译的时候就不会打印任何的信息,同 uboot 一样
实现源码
87 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 88 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 89 quiet=silent_ 90 endif 91 else # make-3.8x 92 ifneq ($(filter s% -s%,$(MAKEFLAGS)),) 93 quiet=silent_ 94 endif 95 endif 96 97 export quiet Q KBUILD_VERBOSE
设置编译结果输出目录
- Linux 编译的时候使用“O=xxx”即可将编译产生的过程文件输出到指定的目录中
实现源码
116 ifeq ($(KBUILD_SRC),) 117 118 # OK, Make called in directory where kernel src resides 119 # Do we want to locate output files in a separate directory? 120 ifeq ("$(origin O)", "command line") 121 KBUILD_OUTPUT := $(O) 122 endif