buildroot override 机制
前言
buildroot 编译的通常流程是:下载 tar 包、解压、配置、编译、安装。tar 包下载到 dl 目录中,编译时解压到 output/build/package-,这是一个临时目录,每当使用 make clean 时,该目录会被完全删除。
所以,当开发一个组件时,直接在 output/build/package- 目录中修改不是一个合适的解决方案。
override
为此,buildroot 提供了一种特定的机制:_OVERRIDE_SRCDIR。buildroot 读取 override 文件(默认是 $(CONFIG_DIR)/local.mk),文件内容示例如下:
<pkg1>_OVERRIDE_SRCDIR = /path/to/pkg1/sources
<pkg2>_OVERRIDE_SRCDIR = /path/to/pkg2/sources
这样,在执行 make _rebuild 的时候,buildroot 就会将指定目录的源码拷贝到 output/build/package-custom,然后编译、安装。
优化
编译时可能会报如下错误
comm: /xxx/buildroot-xxx/xxx/build/xxx-custom/.files-list-images.before: No such file or directory
添加一行命令做个优化即可
vim package/pkg-generic.mk
# Rsync the source directory if the <pkg>_OVERRIDE_SRCDIR feature is
# used.
$(BUILD_DIR)/%/.stamp_rsynced:@$(call step_start,rsync)@$(call MESSAGE,"Syncing from source dir $(SRCDIR)")@mkdir -p $(@D)$(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep))@test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1)rsync -au --chmod=u=rwX,go=rX $($(PKG)_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS) $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D)# 添加的命令touch $(@D)/.files-list.before; touch $(@D)/.files-list-staging.before; touch $(@D)/.files-list-host.before;$(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep))@$(call step_end,rsync)$(Q)touch $@
buildroot override 机制相关推荐
- UVM factory机制源码探微
文章目录 1. UVM factory机制的使用 2. class 在factory 中的注册过程 2.1. `uvm_component_utils() 2.1.1. m_uvm_component ...
- 使用 kolla-ansible 来 reconfigure OpenStack 集群
目录 文章目录 目录 kolla-ansible reconfigure config override 机制 Override 指定的 OpenStack project Override 指定的 ...
- java class load 类加载
1:what is it jvm把描述类的数据从class字节码文件加载到内存,并对数据进行校验.解析.初始化,最终成为jvm直接使用的数据类型 1.ClassNotFoundExcetpion ...
- Java Platform SE 8(Java概念图的描述)中文文档
Java概念图将Java组件技术分类,下面列出了这些层次,从上到下,以及每个层次都包含的技术,属于较低水平的技术可以作为更高水平的一部分的基础. Java语言 Tools & Tool API ...
- EDK II Module Writers Guide上
一.EDK2简介 1.EDK2工作流 二.EDK2 Packages 1.Packages介绍 EDK2 Packages是一个容器,其中包含一组模块及模块的相关定义.每个Package是一个 ...
- UEFI Specification 第二章 概述
UEFI支持通过加载UEFI驱动和UEFI应用程序映象来扩展平台固件.当UEFI驱动程序和UEFI应用程序加载时,它们可以访问所有UEFI定义的运行时和引导服务. UEFI允许将OS加载程序和平台固件 ...
- camx框架-Camera初始化
1. camera provider 目录:hardware/interfaces/camera/ service.cpp->cameraprovider_2_4.cpp(HIDL_FETCH_ ...
- AS3 抽象类与接口
抽象类(Abstract)是不能被实例化的类,往往不给出具体代码的实现,归纳子类共同特征和行为. (AS3没有abstract关键字,但也可以定义概念上的抽象类.) 在理想的继承架构设计里,具体类都继 ...
- 《C专家编程》学习笔记
Chapter 1 char *cp; const char *ccp; ccp = cp; ccp是有指向有const 限定符的char 的指针,cp是指向没有限定符修饰的指针:左操作数具有右操作数 ...
最新文章
- eclipse中中文字体过小
- Ecol. Lett.:写给实践生态学家的β多样性分析指南 | 朝花夕拾
- 机器学习开发者的现代化路径:不需要从统计学微积分开始
- python创建列表_python创建与遍历List二维列表的方法
- 2021暑假每日一题 【week8 完结】
- dubbo的学习使用,第一章
- python日志_python日志处理
- Shell重定向的概念笔记
- 配置java编译环境
- idea 2018.3.5版本
- 学习LaTex:常用符号总结
- Xshell连接VMware虚拟机(CentOs7)
- springboot使用@Async实现异步操作
- 招银网络Java后端笔试题
- twitter 授权过程
- 个人博客登录注册部分
- canvas绘图树状图
- 【c++】Lanelet2 Examples笔记(一)
- python编程实例教程-Python程序设计实例教程
- java英文介绍范文_java的英文自我介绍范文