uboot学习之二《编译代码流程》

继续开始我们的uboot系列,目标很简单能快速的移植代码 问题一:uboot怎么管理那么多板子的? 答:采用宏来控制和选择 问题二:那么多宏怎么管理?时间长忘记了怎么办? 答:采用图形工具来...

继续开始我们的uboot系列,目标很简单能快速的移植代码

问题一:uboot怎么管理那么多板子的?

答:采用宏来控制和选择

问题二:那么多宏怎么管理?时间长忘记了怎么办?

答:采用图形工具来管理

问题三:图像工具怎么管理?难道读取c源代码提取宏吗?

答:没有那么复杂,人家整出了一套规则语言,和c没有关系

问题四:如果我在图形界面中修改了宏的选项,那么怎么对应到c里面?

答:我们先给图像界面工具的修改配置写入.config中,再给他转为c需要的头文件(autoconf.h)

问题五:这么复杂的系统,我们怎么共享配置?写一个步骤让人家照着配置?

答:我们也可以提供命令行方式,不如 make xxx_defconfig

问题六:你的意思,我们写代码的时候必须要你转变后的autoconf.h?

答:不需要,这个由makefile自动包含的

问题七:能否具体点?你是不是在打太极?我心里没有底

答:生成autoconf.h头文件后,被包含在include/linux/kconfig.h里面,在编译的时候makefile自动添加-I include/linux/kconfig.h

就可以了

问题八:makefile是怎么添加include/linux/kconfig.h的

答:我们来看看编译流程

第一步:

#  Makefile(顶层)

    %.o: %.c

        make -f scripts/Makefile.build obj=drivers/char drivers/char/mem.o

第二步:

# scripts/Makefile.build

    $(obj)/%.o: $(src)/%.c

        $(call if_changed_rule,cc_o_c)

 第三步:

#scripts/Makefile.build 打印这条命令,并且执行命令

    rule_cc_o_c

$(call echo-cmd,cc_o_c) $(cmd_cc_o_c)


 第四步:

#scripts/Makefile.build 执行命令

        cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<

那么问题来了 c_flags的变量是啥?

打开scripts/Makefile.lib

c_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(UBOOTINCLUDE)     \

 $(__c_flags) $(modkern_cflags)                           \

 -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags)


a_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(UBOOTINCLUDE)     \

 $(__a_flags) $(modkern_aflags)


cpp_flags      = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(UBOOTINCLUDE)     \

 $(__cpp_flags)


那么UBOOTINCLUDE 变量是啥?

打开scripts/Makefile.autoconf 里面有UBOOTINCLUDE 的定义

UBOOTINCLUDE    := \

-Iinclude \

$(if $(KBUILD_SRC), -I$(srctree)/include) \

-I$(srctree)/arch/$(ARCH)/include \

-include $(srctree)/include/linux/kconfig.h




ps:能否添加一个代码框啊 

参考 https://blog.csdn.net/m0_47799526/article/details/106174635

0 条评论&回复

请先 登录 后评论
DebugArm
DebugArm

5 篇文章

作家榜 »

  1. 百问网-周老师 18 文章
  2. st_ashang 14 文章
  3. 渐进 12 文章
  4. zxq 11 文章
  5. helloworld 8 文章
  6. 谢工 5 文章
  7. Litchi_Zheng 5 文章
  8. DebugArm 5 文章