linux make xxx_defconfig 过程 Makefile.build 脚本分析

本文深入剖析Linux内核构建过程,重点介绍config-targets、mixed-targets和dot-config变量的作用,以及它们如何影响内核配置和编译。文章详细解释了Makefile中的条件编译流程,展示了如何通过scripts/kconfig生成.config配置文件。
config-targets := 0
mixed-targets  := 0
dot-config     := 1

ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
		dot-config := 0
	endif
endif

ifeq ($(KBUILD_EXTMOD),)
        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
                config-targets := 1
                ifneq ($(words $(MAKECMDGOALS)),1)
                        mixed-targets := 1
                endif
        endif
endif

ifeq ($(mixed-targets),1)
# ===========================================================================
# We're called with mixed targets (*config and build targets).
# Handle them one by one.

PHONY += $(MAKECMDGOALS) __build_one_by_one

$(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one
	@:

__build_one_by_one:
	$(Q)set -e; \
	for i in $(MAKECMDGOALS); do \
		$(MAKE) -f $(srctree)/Makefile $$i; \
	done

else
ifeq ($(config-targets),1)
# ===========================================================================
# *config targets only - make sure prerequisites are updated, and descend
# in scripts/kconfig to make the *config target

# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
# KBUILD_DEFCONFIG may point out an alternative default configuration
# used for 'make defconfig'
include arch/$(SRCARCH)/Makefile
export KBUILD_DEFCONFIG KBUILD_KCONFIG

config: scripts_basic outputmakefile FORCE
	$(Q)$(MAKE) $(build)=scripts/kconfig $@

%config: scripts_basic outputmakefile FORCE
	$(Q)$(MAKE) $(build)=scripts/kconfig $@

else
# ===========================================================================
# Build targets only - this includes vmlinux, arch specific targets, clean
# targets and others. In general all targets except *config targets.

ifeq ($(KBUILD_EXTMOD),)
# Additional helpers built in scripts/
# Carefully list dependencies so we do not try to build scripts twice
# in parallel
PHONY += scripts
scripts: scripts_basic include/config/auto.conf include/config/tristate.conf \
	 asm-generic
	$(Q)$(MAKE) $(build)=$(@)

# Objects we will link into vmlinux / subdirs we need to visit
init-y		:= init/
drivers-y	:= drivers/ sound/ firmware/
net-y		:= net/
libs-y		:= lib/
core-y		:= usr/
endif # KBUILD_EXTMOD

第 490~507 行和 uboot 一样,都是设置定义变量 config-targets、 mixed-targets 和 dot-config的值,最终这三个变量的值为:

config-targets= 1
mixed-targets= 0
dot-config= 1

因为 config-targets=1,因此第 534 行~541 行成立。第 534 行引用 arch/arm/Makefile 这个文件,这个文件很重要, 因为 zImage、 uImage 等这些文件就是由 arch/arm/Makefile 来生成的。
第 535 行导出变量 KBUILD_DEFCONFIG KBUILD_KCONFIG。
第 537 行,没有目标与之匹配,因此不执行。
第 540 行,“make xxx_defconfig”与目标“%config”匹配,因此执行。“%config”依赖scripts_basic、 outputmakefile 和 FORCE,“%config”真正有意义的依赖就只有 scripts_basic,scripts_basic 的规则如下:

448 scripts_basic:
449 $(Q)$(MAKE) $(build)=scripts/basic
450 $(Q)rm -f .tmp_quiet_recordmcount

build 定义在文件 scripts/Kbuild.include 中,值为 build := -f $(srctree)/scripts/Makefile.buildobj,因此将代码展开就是:

scripts_basic:
@make -f ./scripts/Makefile.build obj=scripts/basic //也可以没有@,视配置而定
@rm -f . tmp_quiet_recordmcount //也可以没有@

Makefile.build 脚本分析

从上一小节可知,“ make xxx_defconfig“配置 Linux 的时候如下两行命令会执行脚本

scripts/Makefile.build:
@make -f ./scripts/Makefile.build obj=scripts/basic
@make -f ./scripts/Makefile.build obj=scripts/kconfig xxx_defconfig

我们依次来分析一下:

1、 scripts_basic 目标对应的命令

scripts_basic 目标对应的命令为: @make -f ./scripts/Makefile.build obj=scripts/basic。打开文件 scripts/Makefile.build,有如下代码:

41 # The filename Kbuild has precedence over Makefile
42 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
43 kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuilddir)/Kbuild,$(kbuild-dir)/Makefile)
44 include $(kbuild-file)

将 kbuild-dir 展开后为:

kbuild-dir=./scripts/basic

将 kbuild-file 展开后为:

kbuild-file= ./scripts/basic/Makefile

最后将 59 行展开,即:

include ./scripts/basic/Makefile

继续分析 scripts/Makefile.build,如下代码:

94 __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target)$(extra-y)) \
95 $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \
96 $(subdir-ym) $(always)
97 @:

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

__build:$(builtin-target) $(lib-target) $(extra-y)) $(subdir-ym) $(always)
@:

可以看出目标__build 有 5 个依赖: builtin-target、 lib-target、 extra-y、 subdir-ym 和 always。
这 5 个依赖的具体内容如下:

builtin-target =
lib-target =
extra-y =
subdir-ym =
always = scripts/basic/fixdep scripts/basic/bin2c

只有 always 有效,因此__build 最终为:

__build: scripts/basic/fixdep scripts/basic/bin2c
@:

__build 依赖于 scripts/basic/fixdep 和 scripts/basic/bin2c,所以要先将 scripts/basic/fixdep 和scripts/basic/bin2c.c 这两个文件编译成 fixdep 和 bin2c。
综上所述, scripts_basic 目标的作用就是编译出 scripts/basic/fixdep 和 scripts/basic/bin2c 这两个软件。
2、 %config 目标对应的命令
%config 目 标 对 应 的 命 令 为 :

@make -f ./scripts/Makefile.build obj=scripts/kconfig

xxx_defconfig,此命令会使用到的各个变量值如下:

src= scripts/kconfig
kbuild-dir = ./scripts/kconfig
kbuild-file = ./scripts/kconfig/Makefile
include ./scripts/kconfig/Makefile

可以看出, Makefile.build 会读取 scripts/kconfig/Makefile 中的内容,此文件有如下所示内容:

113 %_defconfig: $(obj)/conf
114 $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@
$(Kconfig)

目标%_defconfig 与 xxx_defconfig 匹配,所以会执行这条规则,将其展开就是:

%_defconfig: scripts/kconfig/conf
@ scripts/kconfig/conf --defconfig=arch/arm/configs/%_defconfig Kconfig

%_defconfig依赖scripts/kconfig/conf,所以会编译scripts/kconfig/conf.c生成conf这个软件。
此软件就会将%_defconfig 中的配置输出到.config 文件中,最终生成 Linux kernel 根目录下的.config 文件。

tools/fdtgrep.c:745:5: warning: no previous prototype for ‘utilfdt_read_err’ [-Wmissing-prototypes] int utilfdt_read_err(const char *filename, char **buffp) ^ tools/fdtgrep.c:751:7: warning: no previous prototype for ‘utilfdt_read_len’ [-Wmissing-prototypes] char *utilfdt_read_len(const char *filename, off_t *len) ^ tools/fdtgrep.c:765:7: warning: no previous prototype for ‘utilfdt_read’ [-Wmissing-prototypes] char *utilfdt_read(const char *filename) ^ tools/fdtgrep.c:1005:6: warning: no previous prototype for ‘util_usage’ [-Wmissing-prototypes] void util_usage(const char *errmsg, const char *synopsis, ^ tools/fdtgrep.c:1074:6: warning: no previous prototype for ‘util_version’ [-Wmissing-prototypes] void util_version(void) ^ In file included from tools/lib/hash-checksum.c:1:0: ./tools/../lib/hash-checksum.c:19:5: warning: no previous prototype for ‘hash_calculate’ [-Wmissing-prototypes] int hash_calculate(const char *name, ^ HOSTLD tools/gen_ethaddr_crc HOSTLD tools/fdtgrep HOSTLD tools/dumpimage HOSTLD tools/mkimage AR arch/arm/cpu/built-in.o CC cmd/bootm.o CC cmd/boot.o CC cmd/help.o CC cmd/panic.o CC cmd/version.o CC cmd/blk_common.o AR cmd/arm/built-in.o CC disk/part.o CC cmd/sstar/ufu/g_sstar_dnl.o CC common/init/board_init.o AR drivers/adc/built-in.o CC arch/arm/cpu/armv7/cache_v7.o AR drivers/dma/ti/built-in.o AS arch/arm/lib/vectors.o AS arch/arm/lib/crt0.o AR drivers/dma/built-in.o AS arch/arm/lib/setjmp.o AS arch/arm/cpu/armv7/cache_v7_asm.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/version.o' failed make[4]: *** [cmd/version.o] Error 1 make[4]: *** Deleting file 'cmd/version.o' make[4]: *** 正在等待未完成的任务.... CC arch/arm/mach-sstar/sstar_sys_utility.o AS arch/arm/lib/relocate.o CC arch/arm/mach-sstar/board_common.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/help.o' failed make[4]: *** [cmd/help.o] Error 1 make[4]: *** Deleting file 'cmd/help.o' CC arch/arm/lib/bootm-fdt.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/panic.o' failed make[4]: *** [cmd/panic.o] Error 1 make[4]: *** Deleting file 'cmd/panic.o' CC arch/arm/lib/bootm.o AR drivers/ata/built-in.o CC arch/arm/cpu/armv7/cpu.o AR drivers/axi/built-in.o CC drivers/gpio/gpio-uclass.o CC drivers/block/blk-uclass.o CC drivers/block/blkcache.o CC arch/arm/mach-sstar/iford/chip.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/cpu/armv7/cpu.o' failed make[4]: *** [arch/arm/cpu/armv7/cpu.o] Error 1 make[4]: *** Deleting file 'arch/arm/cpu/armv7/cpu.o' make[4]: *** 正在等待未完成的任务.... CC arch/arm/mach-sstar/iford/board.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/lib/bootm-fdt.o' failed make[4]: *** [arch/arm/lib/bootm-fdt.o] Error 1 make[4]: *** Deleting file 'arch/arm/lib/bootm-fdt.o' make[4]: *** 正在等待未完成的任务.... /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/boot.o' failed make[4]: *** [cmd/boot.o] Error 1 make[4]: *** Deleting file 'cmd/boot.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'common/init/board_init.o' failed make[5]: *** [common/init/board_init.o] Error 1 make[5]: *** Deleting file 'common/init/board_init.o' AS arch/arm/mach-sstar/iford/reset.o scripts/Makefile.build:409: recipe for target 'common/init' failed make[4]: *** [common/init] Error 2 Makefile:1908: recipe for target 'common' failed make[3]: *** [common] Error 2 make[3]: *** 正在等待未完成的任务.... /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/mach-sstar/board_common.o' failed make[4]: *** [arch/arm/mach-sstar/board_common.o] Error 1 make[4]: *** Deleting file 'arch/arm/mach-sstar/board_common.o' make[4]: *** 正在等待未完成的任务.... AR drivers/bus/built-in.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/cpu/armv7/cache_v7.o' failed make[4]: *** [arch/arm/cpu/armv7/cache_v7.o] Error 1 make[4]: *** Deleting file 'arch/arm/cpu/armv7/cache_v7.o' scripts/Makefile.build:268: recipe for target 'arch/arm/mach-sstar/iford/chip.o' failed Makefile:1908: recipe for target 'arch/arm/cpu/armv7' failed make[3]: *** [arch/arm/cpu/armv7] Error 2 make[5]: *** [arch/arm/mach-sstar/iford/chip.o] Error 1 make[5]: *** Deleting file 'arch/arm/mach-sstar/iford/chip.o' make[5]: *** 正在等待未完成的任务.... CC disk/part_dos.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/blk_common.o' failed make[4]: *** [cmd/blk_common.o] Error 1 make[4]: *** Deleting file 'cmd/blk_common.o' CC cmd/sstar/ufu/f_firmware_update.o CC cmd/sstar/ufu/ufu.o CC cmd/sstar/cmd_sstar_common.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/mach-sstar/sstar_sys_utility.o' failed /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 make[4]: *** [arch/arm/mach-sstar/sstar_sys_utility.o] Error 1 make[4]: *** Deleting file 'arch/arm/mach-sstar/sstar_sys_utility.o' scripts/Makefile.build:268: recipe for target 'cmd/bootm.o' failed make[4]: *** [cmd/bootm.o] Error 1 make[4]: *** Deleting file 'cmd/bootm.o' AR drivers/cache/built-in.o CC cmd/sstar/estar.o CC drivers/core/device.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/block/blkcache.o' failed make[5]: *** [drivers/block/blkcache.o] Error 1 make[5]: *** Deleting file 'drivers/block/blkcache.o' make[5]: *** 正在等待未完成的任务.... AR drivers/clk/analogbits/built-in.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/lib/bootm.o' failed make[4]: *** [arch/arm/lib/bootm.o] Error 1 make[4]: *** Deleting file 'arch/arm/lib/bootm.o' Makefile:1908: recipe for target 'arch/arm/lib' failed make[3]: *** [arch/arm/lib] Error 2 CC drivers/crypto/fsl/sec.o AR drivers/crypto/rsa_mod_exp/built-in.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/sstar/ufu/g_sstar_dnl.o' failed make[6]: *** [cmd/sstar/ufu/g_sstar_dnl.o] Error 1 make[6]: *** Deleting file 'cmd/sstar/ufu/g_sstar_dnl.o' CC drivers/core/fdtaddr.o make[6]: *** 正在等待未完成的任务.... CC drivers/core/lists.o CC drivers/clk/imx/clk-gate2.o CC cmd/sstar/riu.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'arch/arm/mach-sstar/iford/board.o' failed make[5]: *** [arch/arm/mach-sstar/iford/board.o] Error 1 make[5]: *** Deleting file 'arch/arm/mach-sstar/iford/board.o' scripts/Makefile.build:409: recipe for target 'arch/arm/mach-sstar/iford' failed make[4]: *** [arch/arm/mach-sstar/iford] Error 2 Makefile:1908: recipe for target 'arch/arm/mach-sstar' failed make[3]: *** [arch/arm/mach-sstar] Error 2 /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 CC cmd/sstar/debug.o scripts/Makefile.build:268: recipe for target 'cmd/sstar/cmd_sstar_common.o' failed make[5]: *** [cmd/sstar/cmd_sstar_common.o] Error 1 make[5]: *** Deleting file 'cmd/sstar/cmd_sstar_common.o' make[5]: *** 正在等待未完成的任务.... /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/sstar/estar.o' failed make[5]: *** [cmd/sstar/estar.o] Error 1 make[5]: *** Deleting file 'cmd/sstar/estar.o' CC drivers/clk/imx/clk-pllv3.o CC drivers/core/root.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'disk/part.o' failed make[4]: *** [disk/part.o] Error 1 make[4]: *** Deleting file 'disk/part.o' make[4]: *** 正在等待未完成的任务.... AR drivers/clk/tegra/built-in.o disk/part_dos.c:559:13: warning: 'decode_partitionInfo' defined but not used [-Wunused-function] 559 | static void decode_partitionInfo(unsigned char *in, PartitionInfo *partInfo) | ^~~~~~~~~~~~~~~~~~~~ CC drivers/clk/imx/clk-pfd.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/sstar/ufu/ufu.o' failed make[6]: *** [cmd/sstar/ufu/ufu.o] Error 1 make[6]: *** Deleting file 'cmd/sstar/ufu/ufu.o' CC drivers/core/uclass.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/block/blk-uclass.o' failed make[5]: *** [drivers/block/blk-uclass.o] Error 1 make[5]: *** Deleting file 'drivers/block/blk-uclass.o' scripts/Makefile.build:409: recipe for target 'drivers/block' failed make[4]: *** [drivers/block] Error 2 make[4]: *** 正在等待未完成的任务.... /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/crypto/fsl/sec.o' failed make[6]: *** [drivers/crypto/fsl/sec.o] Error 1 make[6]: *** Deleting file 'drivers/crypto/fsl/sec.o' scripts/Makefile.build:409: recipe for target 'drivers/crypto/fsl' failed make[5]: *** [drivers/crypto/fsl] Error 2 scripts/Makefile.build:409: recipe for target 'drivers/crypto' failed make[4]: *** [drivers/crypto] Error 2 CC drivers/core/util.o CC drivers/core/device-remove.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/sstar/debug.o' failed make[5]: *** [cmd/sstar/debug.o] Error 1 make[5]: *** Deleting file 'cmd/sstar/debug.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/gpio/gpio-uclass.o' failed make[4]: *** [drivers/gpio/gpio-uclass.o] Error 1 make[4]: *** Deleting file 'drivers/gpio/gpio-uclass.o' Makefile:1908: recipe for target 'drivers/gpio' failed make[3]: *** [drivers/gpio] Error 2 CC drivers/core/simple-bus.o CC drivers/core/dump.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/fdtaddr.o' failed make[5]: *** [drivers/core/fdtaddr.o] Error 1 make[5]: *** Deleting file 'drivers/core/fdtaddr.o' make[5]: *** 正在等待未完成的任务.... AR drivers/clk/ti/built-in.o CC drivers/clk/clk-uclass.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/sstar/riu.o' failed make[5]: *** [cmd/sstar/riu.o] Error 1 make[5]: *** Deleting file 'cmd/sstar/riu.o' CC drivers/clk/clk_fixed_rate.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/util.o' failed make[5]: *** [drivers/core/util.o] Error 1 make[5]: *** Deleting file 'drivers/core/util.o' CC drivers/clk/clk_fixed_factor.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/simple-bus.o' failed make[5]: *** [drivers/core/simple-bus.o] Error 1 make[5]: *** Deleting file 'drivers/core/simple-bus.o' CC drivers/clk/clk.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'disk/part_dos.o' failed make[4]: *** [disk/part_dos.o] Error 1 make[4]: *** Deleting file 'disk/part_dos.o' Makefile:1908: recipe for target 'disk' failed make[3]: *** [disk] Error 2 CC drivers/clk/clk-divider.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/imx/clk-gate2.o' failed make[6]: *** [drivers/clk/imx/clk-gate2.o] Error 1 make[6]: *** Deleting file 'drivers/clk/imx/clk-gate2.o' make[6]: *** 正在等待未完成的任务.... CC drivers/clk/clk-mux.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/lists.o' failed make[5]: *** [drivers/core/lists.o] Error 1 make[5]: *** Deleting file 'drivers/core/lists.o' CC drivers/clk/clk-gate.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/root.o' failed make[5]: *** [drivers/core/root.o] Error 1 make[5]: *** Deleting file 'drivers/core/root.o' CC drivers/clk/clk-fixed-factor.o /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk_fixed_rate.o' failed make[5]: *** [drivers/clk/clk_fixed_rate.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk_fixed_rate.o' make[5]: *** 正在等待未完成的任务.... /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk_fixed_factor.o' failed make[5]: *** [drivers/clk/clk_fixed_factor.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk_fixed_factor.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk.o' failed make[5]: *** [drivers/clk/clk.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/imx/clk-pfd.o' failed make[6]: *** [drivers/clk/imx/clk-pfd.o] Error 1 make[6]: *** Deleting file 'drivers/clk/imx/clk-pfd.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/dump.o' failed make[5]: *** [drivers/core/dump.o] Error 1 make[5]: *** Deleting file 'drivers/core/dump.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk-gate.o' failed make[5]: *** [drivers/clk/clk-gate.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk-gate.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk-mux.o' failed make[5]: *** [drivers/clk/clk-mux.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk-mux.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/device-remove.o' failed make[5]: *** [drivers/core/device-remove.o] Error 1 make[5]: *** Deleting file 'drivers/core/device-remove.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/imx/clk-pllv3.o' failed make[6]: *** [drivers/clk/imx/clk-pllv3.o] Error 1 make[6]: *** Deleting file 'drivers/clk/imx/clk-pllv3.o' scripts/Makefile.build:409: recipe for target 'drivers/clk/imx' failed make[5]: *** [drivers/clk/imx] Error 2 /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/uclass.o' failed make[5]: *** [drivers/core/uclass.o] Error 1 make[5]: *** Deleting file 'drivers/core/uclass.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk-fixed-factor.o' failed make[5]: *** [drivers/clk/clk-fixed-factor.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk-fixed-factor.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk-divider.o' failed make[5]: *** [drivers/clk/clk-divider.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk-divider.o' /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/core/device.o' failed make[5]: *** [drivers/core/device.o] Error 1 make[5]: *** Deleting file 'drivers/core/device.o' scripts/Makefile.build:409: recipe for target 'drivers/core' failed make[4]: *** [drivers/core] Error 2 /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'drivers/clk/clk-uclass.o' failed make[5]: *** [drivers/clk/clk-uclass.o] Error 1 make[5]: *** Deleting file 'drivers/clk/clk-uclass.o' scripts/Makefile.build:409: recipe for target 'drivers/clk' failed make[4]: *** [drivers/clk] Error 2 Makefile:1908: recipe for target 'drivers' failed make[3]: *** [drivers] Error 2 /bin/sh: ./scripts/sstar_coding_style_sanitize.py: 权限不够 scripts/Makefile.build:268: recipe for target 'cmd/sstar/ufu/f_firmware_update.o' failed make[6]: *** [cmd/sstar/ufu/f_firmware_update.o] Error 1 make[6]: *** Deleting file 'cmd/sstar/ufu/f_firmware_update.o' scripts/Makefile.build:409: recipe for target 'cmd/sstar/ufu' failed make[5]: *** [cmd/sstar/ufu] Error 2 scripts/Makefile.build:409: recipe for target 'cmd/sstar' failed make[4]: *** [cmd/sstar] Error 2 Makefile:1908: recipe for target 'cmd' failed make[3]: *** [cmd] Error 2 make[3]: *** wait: 没有子进程。 停止。 makefile:33: recipe for target 'GNUmakefile' failed make[2]: *** [GNUmakefile] Error 2 make[2]: Leaving directory '/home/tp/Project/Iford_IMD00V5.1.1/Iford_IMD00V5.1.1_defconfig/SourceCode/boot' board/uboot/uboot.mk:26: recipe for target 'boot' failed make[1]: *** [boot] Error 1 make[1]: Leaving directory '/home/tp/Project/Iford_IMD00V5.1.1/Iford_IMD00V5.1.1_defconfig/SourceCode/project' makefile:68: recipe for target 'image' failed make: *** [image] Error 2
最新发布
09-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值