• Linux内核顶层Makefile前期工作分析一


    一.   Linux内核顶层Makefile

    Linux 的顶层 Makefile 和 uboot 的顶层 Makefile 非常相似,因为 uboot 参考了 Linux。

    二.  Linux内核-顶层Makefile前期工作

    下面了解一下 Linux内核的 顶层 Makefile前期所做的工作。

    1、版本号

    顶层 Makefile 一开始就是 Linux 内核的版本号,如下所示:
    1. 1 VERSION = 4
    2. 2 PATCHLEVEL = 1
    3. 3 SUBLEVEL = 15
    4. 4 EXTRAVERSION =
    可以看出, Linux 内核版本号为 4.1.15

    2MAKEFLAGS 变量

    MAKEFLAGS 变量设置如下所示:
    16 MAKEFLAGS += -rR --include-dir=$(CURDIR)

    3、命令输出

    Linux 编译的时候也可以通过“ V=1 ”来输出完整的命令,这个和 uboot 一样,相关代码如下所示:
    1. 69 ifeq ("$(origin V)", "command line")
    2. 70 KBUILD_VERBOSE = $(V)
    3. 71 endif
    4. 72 ifndef KBUILD_VERBOSE
    5. 73 KBUILD_VERBOSE = 0
    6. 74 endif
    7. 75
    8. 76 ifeq ($(KBUILD_VERBOSE),1)
    9. 77 quiet =
    10. 78 Q =
    11. 79 else
    12. 80 quiet=quiet_
    13. 81 Q = @
    14. 82 endif

    4、静默输出

    Linux 编译的时候使用“make -s”就可实现静默编译,编译的时候就不会打印任何的信息, uboot 一样,相关代码如下:

    1. 87 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
    2. 88 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
    3. 89 quiet=silent_
    4. 90 endif
    5. 91 else # make-3.8x
    6. 92 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
    7. 93 quiet=silent_
    8. 94 endif
    9. 95 endif
    10. 96
    11. 97 export quiet Q KBUILD_VERBOSE

    5、设置编译结果输出目录

    Linux 编译的时候使用“ O=xxx ”即可将编译产生的过程文件输出到指定的目录中,相关代 码如下:
    1. 116 ifeq ($(KBUILD_SRC),)
    2. 117
    3. 118 # OK, Make called in directory where kernel src resides
    4. 119 # Do we want to locate output files in a separate directory?
    5. 120 ifeq ("$(origin O)", "command line")
    6. 121 KBUILD_OUTPUT := $(O)
    7. 122 endif

    6、代码检查

    Linux 也支持代码检查,使用命令“ make C=1 ”使能代码检查,检查那些需要重新编译的文件。“ make C=2 ” 用于检查所有的源码文件,顶层 Makefile 中的代码如下:
    1. 172 ifeq ("$(origin C)", "command line")
    2. 173 KBUILD_CHECKSRC = $(C)
    3. 174 endif
    4. 175 ifndef KBUILD_CHECKSRC
    5. 176 KBUILD_CHECKSRC = 0
    6. 177 endif

    下一篇文章继续分析 Linux内核源码的 顶层Makefile所做的准备工作。

      Linux内核顶层Makefile前期工作

  • 相关阅读:
    程序员的数学课14 程序的循环:如何利用数学归纳法进行程序开发?
    面渣逆袭:微服务三十三问,两万字图文详解!速收藏!
    sql语句查询数据库字段和表字段数量
    React技巧之表单提交获取input值
    P1719 最大加权矩形
    常用工具类commons-io的学习使用
    CMU15445 (Fall 2019) 之 Project#4 - Logging & Recovery 详解
    qgis制图
    【MySQL】表的约束
    知物由学 | 弹幕蜂拥而入,智能审核平台如何用技术破局?
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/133100349