Linux顶层Makefile

1.内核编译

得到内核之后编写shell脚本

 #!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j12

image

2.目录介绍

编译之后的目录为
image
image
image
image

3.Makefile讲解

首先建立json排除不需要看的代码
image

{ 
     "search.exclude": 
     { 
        "**/node_modules": true, 
        "**/bower_components": true, 
        "**/*.o":true, 
        "**/*.su":true, 
         "**/*.cmd":true, 
         "Documentation":true,
        /* 屏蔽不用的架构相关的文件 */
        "arch/alpha":true,
        "arch/arc":true,
        "arch/arm64":true,
        "arch/avr32":true,
        "arch/[b-z]*":true,
        "arch/arm/plat*":true, 
        "arch/arm/mach-[a-h]*":true, 
        "arch/arm/mach-[n-z]*":true, 
        "arch/arm/mach-i[n-z]*":true,
        "arch/arm/mach-m[e-v]*":true,
        "arch/arm/mach-k*":true,
        "arch/arm/mach-l*":true,
    
        /* 屏蔽排除不用的配置文件 */
        "arch/arm/configs/[a-h]*":true,
        "arch/arm/configs/[j-z]*":true,
        "arch/arm/configs/imo*":true,
        "arch/arm/configs/in*":true,
        "arch/arm/configs/io*":true,
        "arch/arm/configs/ix*":true,
    
        /* 屏蔽掉不用的 DTB 文件 */
        "arch/arm/boot/dts/[a-h]*":true,
        "arch/arm/boot/dts/[k-z]*":true,
        "arch/arm/boot/dts/in*":true,
        "arch/arm/boot/dts/imx1*":true,
        "arch/arm/boot/dts/imx7*":true,
        "arch/arm/boot/dts/imx2*":true,
        "arch/arm/boot/dts/imx3*":true,
        "arch/arm/boot/dts/imx5*":true,
        "arch/arm/boot/dts/imx6d*":true,
        "arch/arm/boot/dts/imx6q*":true,
        "arch/arm/boot/dts/imx6s*":true,
        "arch/arm/boot/dts/imx6ul-*":true,
        "arch/arm/boot/dts/imx6ull-9x9*":true,
        "arch/arm/boot/dts/imx6ull-14x14-ddr*":true, 
    },
    "files.exclude": 
    {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true, 
        "**/*.o":true,
        "**/*.su":true,
        "**/*.cmd":true,
        "Documentation":true,

        /* 屏蔽不用的架构相关的文件 */
        "arch/alpha":true,
        "arch/arc":true,
        "arch/arm64":true,
        "arch/avr32":true,
        "arch/[b-z]*":true,
        "arch/arm/plat*":true, 
        "arch/arm/mach-[a-h]*":true, 
        "arch/arm/mach-[n-z]*":true, 
        "arch/arm/mach-i[n-z]*":true,
        "arch/arm/mach-m[e-v]*":true,
        "arch/arm/mach-k*":true,
        "arch/arm/mach-l*":true,

        /* 屏蔽排除不用的配置文件 */
        "arch/arm/configs/[a-h]*":true,
        "arch/arm/configs/[j-z]*":true,
        "arch/arm/configs/imo*":true,
        "arch/arm/configs/in*":true,
        "arch/arm/configs/io*":true,
        "arch/arm/configs/ix*":true,

        /* 屏蔽掉不用的 DTB 文件 */
        "arch/arm/boot/dts/[a-h]*":true,
        "arch/arm/boot/dts/[k-z]*":true,
        "arch/arm/boot/dts/in*":true,
        "arch/arm/boot/dts/imx1*":true,
        "arch/arm/boot/dts/imx7*":true,
        "arch/arm/boot/dts/imx2*":true,
        "arch/arm/boot/dts/imx3*":true,
        "arch/arm/boot/dts/imx5*":true,
        "arch/arm/boot/dts/imx6d*":true,
        "arch/arm/boot/dts/imx6q*":true,
        "arch/arm/boot/dts/imx6s*":true,
        "arch/arm/boot/dts/imx6ul-*":true,
        "arch/arm/boot/dts/imx6ull-9x9*":true,
        "arch/arm/boot/dts/imx6ull-14x14-ddr*":true,
    }
}

前面很多都是和uboot的makefile一样的

3.1 make_xxx_defconfig

image
image
image

3.2 Makefile.build脚本

image
scripts_basic 目标对应的命令为:@make -f./scripts/Makefile.buildobj=scripts/basic。打开文件 scripts/Makefile.build
image
image
image
__build 是默认目标,因为命令“@make -f ./scripts/Makefile.buildobj=scripts/basic”没有指定目标,所以会使用到默认目标__build。在顶层 Makefile 中,KBUILD_BUILTIN 为 1,KBUILD_MODULES 为空,因此展开后目标__build 为
image
image
image

3.3 make过程

image
image
image
image
head-y:
image
init-y、drivers-y 和 net-y:
image
libs-y:
image
core-y:
image
image
image
image
image
image
image

3.4 built-in.o过程

image
image
image
image
image
image
image

3.5 make zImage

image
image
image

posted @ 2021-12-12 18:27  蘑菇王国大聪明  阅读(116)  评论(0)    收藏  举报