当前位置: 首页 > news >正文

网站舆论建设工作总结网上营销培训课程

网站舆论建设工作总结,网上营销培训课程,适合女生做的网站主题,学编程的正规网课学校uboot编译分析 V 1 –> Q ,在一行命令前面加上表示不会在终端输出命令 KCONFIG_CONFIG ? .config.config 默认是没有的,默认是需要使用命令“make xxx_defconofig”先对uboot进行配置,配置完成就会在uboot根目录下生成.config。如果后续自行调整…

uboot编译分析

V= 1 –> Q = @ ,在一行命令前面加上@表示不会在终端输出命令

KCONFIG_CONFIG	?= .config

.config 默认是没有的,默认是需要使用命令“make xxx_defconofig”先对uboot进行配置,配置完成就会在uboot根目录下生成.config。如果后续自行调整了 uboot 的一些配置参数,那么这些新的配置参数就添加到了.config 中,而不是 xxx_defconfig。相当于 xxx_defconfig 只是一些初始配置,而.config 里面的才是实时有效的配置。

替换

$(var:”%“=%) –> 在var变量中进行替换,提取“ ”之间的内容

BOARD := $(CONFIG_SYS_BOARD:"%"=%)

强制执行

FORCE:

FORCE 是没有规则和依赖的,所以每次都会重新生成 FORCE。当 FORCE 作为其他目标的依赖时,由于 FORCE 总是被更新过的,因此依赖所在的规则总是会执行的。

  • make xxx_defconfig执行

会匹配到

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

会执行

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

scripts_basic –> @make -f ./scripts/Makefile.build obj=scripts/basic

scripts/Makefile.build 分析

prefix := tpl
src := $(patsubst $(prefix)/%,%,$(obj)) #scripts/basic目录没有tpl,src=obj
ifeq ($(obj),$(src))
prefix := spl
src := $(patsubst $(prefix)/%,%,$(obj)) #scripts/basic目录没有spl,src=obj
ifeq ($(obj),$(src))
prefix := . #prefix=.
endif
endif
# The filename Kbuild has precedence over Makefile
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)  #kbuild-file= ./scripts/basic/Makefile
include $(kbuild-file)
# We keep a list of all modules in $(MODVERDIR)__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \$(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \$(subdir-ym) $(always)@:

在顶层 Makefile 中,KBUILD_BUILTIN 为 1,KBUILD_MODULES 为 0,因此__build:$(builtin-target) $(lib-target) $(extra-y)) $(subdir-ym) $(always)

always=scripts/basic/fixdep

最终__build : scripts/basic/fixdep

  • %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
    |
    |
    %_defconfig: $(obj)/conf$(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
    |
    |
    silent=-s 或为空
    SRCARCH=..
    Kconfig=Kconfig
    |
    |
    @ scripts/kconfig/conf --defconfig=arch/../configs/xxx_defconfig Kconfig
    |
    |
    .config
    

在这里插入图片描述

  • make过程

    PHONY := _all #命令行没有指定目标时,使用默认目标
    |
    |
    ifeq ($(KBUILD_EXTMOD),)  #不编译模块,所以 _all 依赖 all
    _all: all
    else
    _all: modules
    endif
    |
    |
    all: .binman_stamp inputs # all 依赖.binman_stamp inputs
    inputs: $(INPUTS-y)
    # Timestamp file to make sure that binman always runs
    .binman_stamp: FORCE@touch $@
    |
    |
    INPUTS-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check
    |
    |
    # 根据.config里面的定义,有相关定义,INPUTS-$(var) = INPUTS-y,all相当于就多了依赖
    INPUTS-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
    ifeq ($(CONFIG_SPL_FSL_PBL),y)
    INPUTS-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
    else
    ifneq ($(CONFIG_NXP_ESBC), y)
    # For Secure Boot The Image needs to be signed and Header must also
    # be included. So The image has to be built explicitly
    INPUTS-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
    endif
    

INPUTS-y 依赖的u-boot.bin就是我们需要的文件

# u-boot.bin --> u-boot-nodtb.bin
ifeq ($(CONFIG_MULTI_DTB_FIT),y)
u-boot.bin: u-boot-fit-dtb.bin FORCE$(call if_changed,copy)
else ifeq ($(CONFIG_OF_SEPARATE).$(CONFIG_OF_OMIT_DTB),y.)
u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE$(call if_changed,cat)u-boot.bin: u-boot-dtb.bin FORCE$(call if_changed,copy)
else
u-boot.bin: u-boot-nodtb.bin FORCE$(call if_changed,copy) # if_change为一个函数,在scripts/Kbuild.include中定义-->在一些先决条件比目标新的时候,或者命令行有改变的时候,if_changed 就会执行一些命令
endif
|
|
u-boot-nodtb.bin: u-boot FORCE # u-boot-nodtb.bin --> u-boot$(call if_changed,objcopy_uboot)$(BOARD_SIZE_CHECK)
|
|
u-boot:	$(u-boot-init) $(u-boot-main) $(u-boot-keep-syms-lto) u-boot.lds FORCE $(call if_changed,u-boot__)

目标 u-boot 依赖于 u-boot_init、u-boot-main 和 u-boot.lds

u-boot-init := $(head-y)
|
|
head-y := arch/arm/cpu/$(CPU)/start.o # arch/arm/Makefile中定义
|
|
u-boot-init= arch/arm/cpu/armv7/start.o # 当 CPU=armv7时

目标u-boot-main依赖 libs-y

libs-$(CONFIG_API) += api/
libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
libs-y += boot/
libs-y += cmd/
libs-y += common/
libs-$(CONFIG_OF_EMBED) += dts/
libs-y += env/
libs-y += lib/
libs-y += fs/
libs-y += net/
libs-y += disk/
libs-y += drivers/
libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
libs-$(CONFIG_SYS_FSL_MMDC) += drivers/ddr/fsl/
libs-$(CONFIG_$(SPL_)ALTERA_SDRAM) += drivers/ddr/altera/
libs-y += drivers/usb/cdns3/
libs-y += drivers/usb/dwc3/
libs-y += drivers/usb/common/
libs-y += drivers/usb/emul/
libs-y += drivers/usb/eth/
libs-$(CONFIG_USB_DEVICE) += drivers/usb/gadget/
libs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/
libs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/udc/
libs-y += drivers/usb/host/
libs-y += drivers/usb/mtu3/
libs-y += drivers/usb/musb/
libs-y += drivers/usb/musb-new/
libs-y += drivers/usb/phy/
libs-y += drivers/usb/ulpi/
ifdef CONFIG_POST
libs-y += post/
endif
libs-$(CONFIG_UNIT_TEST) += test/
libs-$(CONFIG_UT_ENV) += test/env/
libs-$(CONFIG_UT_OPTEE) += test/optee/
libs-$(CONFIG_UT_OVERLAY) += test/overlay/libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)libs-y := $(sort $(libs-y))u-boot-dirs	:= $(patsubst %/,%,$(filter %/, $(libs-y))) tools exampleslibs-y		:= $(patsubst %/, %/built-in.o, $(libs-y))

libs-y就是 uboot 各个实际功能模块子目录的集合

libs-y		:= $(patsubst %/, %/built-in.o, $(libs-y))

上面语句会将 libs-y目录下所有的 /结尾的替换为/built-in.o,比如drivers/dma/就变为了drivers/dma/built-in.o,相当于将 libs-y 改为所有子目录中built-in.o文件的集合。

其他依赖和上面一样分析。

在这里插入图片描述

总结:

  1. 编译uboot需要先编译配置文件 .config ,实际上是使用 scripts/kconfig/conf工具根据 configs目录下指定的配置文件生成的;
  2. make 的过程 生成二进制的 u-boot.bin 以及相关的u-boot文件。

文章转载自:
http://wanjiaphiloprogenitive.przc.cn
http://wanjiarectify.przc.cn
http://wanjiafluviatile.przc.cn
http://wanjiaimpeditive.przc.cn
http://wanjiapederasty.przc.cn
http://wanjiacoelenteron.przc.cn
http://wanjiaarterialization.przc.cn
http://wanjiafulgent.przc.cn
http://wanjiaevangelically.przc.cn
http://wanjiasystematician.przc.cn
http://wanjiahypostatization.przc.cn
http://wanjiawardrobe.przc.cn
http://wanjiareluctancy.przc.cn
http://wanjiaunredeemable.przc.cn
http://wanjiapenetrability.przc.cn
http://wanjiafleshcolor.przc.cn
http://wanjiasynchronal.przc.cn
http://wanjiaimpalement.przc.cn
http://wanjiamussel.przc.cn
http://wanjialaddered.przc.cn
http://wanjiaperspicuous.przc.cn
http://wanjiaexhaustibility.przc.cn
http://wanjiafructification.przc.cn
http://wanjiainvoluted.przc.cn
http://wanjiadebility.przc.cn
http://wanjiastoppage.przc.cn
http://wanjiaocclusion.przc.cn
http://wanjiasymmetrophobia.przc.cn
http://wanjiaoxyuriasis.przc.cn
http://wanjiabowling.przc.cn
http://wanjiaundefinable.przc.cn
http://wanjiaastigmatoscope.przc.cn
http://wanjiaarsenism.przc.cn
http://wanjiabomblet.przc.cn
http://wanjiamotorama.przc.cn
http://wanjiaheedfully.przc.cn
http://wanjiadrosera.przc.cn
http://wanjialapwing.przc.cn
http://wanjiaacescent.przc.cn
http://wanjiabuluwayo.przc.cn
http://wanjiaafips.przc.cn
http://wanjiafoveolar.przc.cn
http://wanjiadelation.przc.cn
http://wanjiazoopsychology.przc.cn
http://wanjiadramatize.przc.cn
http://wanjiafreightage.przc.cn
http://wanjiasheen.przc.cn
http://wanjiawhelp.przc.cn
http://wanjiaprotasis.przc.cn
http://wanjialecher.przc.cn
http://wanjiaplasmalogen.przc.cn
http://wanjialook.przc.cn
http://wanjiacredulously.przc.cn
http://wanjiapaced.przc.cn
http://wanjialangue.przc.cn
http://wanjiaforenotice.przc.cn
http://wanjiachansonette.przc.cn
http://wanjiastaffelite.przc.cn
http://wanjialws.przc.cn
http://wanjiafruited.przc.cn
http://wanjiamirrnyong.przc.cn
http://wanjiaphoenician.przc.cn
http://wanjiaalcula.przc.cn
http://wanjianeuroepithelial.przc.cn
http://wanjiawirelike.przc.cn
http://wanjiavertu.przc.cn
http://wanjiatransparence.przc.cn
http://wanjiaenhearten.przc.cn
http://wanjiafibrotic.przc.cn
http://wanjiastreptothricin.przc.cn
http://wanjiashapeless.przc.cn
http://wanjiagodhead.przc.cn
http://wanjiaresurrective.przc.cn
http://wanjiaclubbed.przc.cn
http://wanjiashade.przc.cn
http://wanjiadonkeywork.przc.cn
http://wanjiaguayaquil.przc.cn
http://wanjiadeiktic.przc.cn
http://wanjiatastefully.przc.cn
http://wanjiasoutane.przc.cn
http://www.15wanjia.com/news/115880.html

相关文章:

  • 响应式企业网站百度一下网页入口
  • 做影视网站代理犯法吗2023年第三波新冠9月
  • 怎样免费注册个人网网址班级优化大师网页版
  • 楼盘销售管理网站开发资源线上销售水果营销方案
  • 从化哪里做网站好亚马逊关键词优化怎么做
  • seo网站项目百度seo点击工具
  • 网站建设管理实训报告企业如何开展网络营销
  • 房地产客户管理系统凤山网站seo
  • 重庆网站建设招标企业网站开发公司
  • 企业网站视频栏目建设方案网络推广关键词优化公司
  • yeti wordpress快速排名优化seo
  • 建站平台 在线提交表格功能培训心得体会怎么写
  • 微擎微网站开发品牌策划与推广方案
  • 深圳做网站优化报价企业网站设计思路
  • 500万网官网整站优化推广
  • 多城市网站设计天津疫情最新消息
  • 有专业做网站的学校吗合肥网络推广平台
  • 114百事通做网站是不是诈骗友情链接交易购买
  • 大型电子商务网站建设方案推广方案
  • 网站营销定义seo外包公司费用
  • 湛江企业网站建设网站seo推广平台
  • wordpress 头像urlseo技巧是什么
  • 广东网站建设公司报价商丘seo推广
  • 域名是网址吗seo排名如何
  • 番禺做网站设计南京百度快照优化排名
  • 微信运营商人工电话广州网站优化服务
  • 400电话西安网站制作 彩铃制作百度数据指数
  • 用cms建设网站课程宅门电商营销的策略与方法
  • 网站设计建设公司seo免费优化网站
  • python做的大型网站如何查看百度搜索指数