openwrt编译过程_未完成

编译脚本的主要实现功能

使用make参数可以方便的追踪makefile的执行过程
内部$(MAKE)调用和其他脚本不会继承make参数,需要手动添加参数
以下为make调试参数

-n       #不执行实际的命令
--trace  #追踪命令的执行过程
--debug  #追踪构建目标
-d       #文件调用过程
-p       #展开构建规则
V=cs     #更详细的执行步骤

从文件结构视角来分析Makefile文件的执行过程,可以清晰的展示出所调用的文件,建立初步的构建框架。

同一个mk文件可能被多个mk文件引入,非必要仅在第一次引入时写出

默认情况下先执行make menuconfig配置需要编译的内容,再使用make进行编译。也可通过make package/kernel/linux [target]的形式指定编译目标,该情况会在后续分析过程中说明

make menuconfig

./Makefile                             #入口,引入各级文件,指定源码顶层构造的依赖
├──./include/debug.mk                  #非重点,引入打印调试信息的方法
├──./include/depends.mk                #非重点,引入检查软件包中文件变动的方法(MD5,时间戳),在编译host,package,config,kernel时使用,并在文件夹下生成*.dep_*类型的文件(可选)记录hash
├──./include/toplevel.mk               #负责与配置相关的依赖
│ ├──include/version.mk                #非重点,引入SDK版本信息
│ ├──include/prereq-build.mk           #非重点,编译了一个hash工具
│ ├──include/scan.mk                   #构建menuconfig菜单项信息
│ │ ├──tmp/info/.files-packageinfo.mk  #构建软件包菜单项信息,由PackageDir实现并输出
│ │ └──tmp/info/.files-targetinfo.mk   #构建架构菜单项信息,由PackageDir实现
│ ├──.config                           #生成的配置文件
│ └──scripts/config/mconf              #调用该工具,提供可视化的配置界面
│   └──Config.in                       #包含软件包的依赖关系
└──./include/verbose.mk                #非重点,V=cs的实现

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×