前言

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 机制相关推荐

  1. UVM factory机制源码探微

    文章目录 1. UVM factory机制的使用 2. class 在factory 中的注册过程 2.1. `uvm_component_utils() 2.1.1. m_uvm_component ...

  2. 使用 kolla-ansible 来 reconfigure OpenStack 集群

    目录 文章目录 目录 kolla-ansible reconfigure config override 机制 Override 指定的 OpenStack project Override 指定的 ...

  3. java class load 类加载

    1:what is  it jvm把描述类的数据从class字节码文件加载到内存,并对数据进行校验.解析.初始化,最终成为jvm直接使用的数据类型 1.ClassNotFoundExcetpion  ...

  4. Java Platform SE 8(Java概念图的描述)中文文档

    Java概念图将Java组件技术分类,下面列出了这些层次,从上到下,以及每个层次都包含的技术,属于较低水平的技术可以作为更高水平的一部分的基础. Java语言 Tools & Tool API ...

  5. EDK II Module Writers Guide上

    一.EDK2简介 1.EDK2工作流 ​ 二.EDK2 Packages 1.Packages介绍 ​ EDK2 Packages是一个容器,其中包含一组模块及模块的相关定义.每个Package是一个 ...

  6. UEFI Specification 第二章 概述

    UEFI支持通过加载UEFI驱动和UEFI应用程序映象来扩展平台固件.当UEFI驱动程序和UEFI应用程序加载时,它们可以访问所有UEFI定义的运行时和引导服务. UEFI允许将OS加载程序和平台固件 ...

  7. camx框架-Camera初始化

    1. camera provider 目录:hardware/interfaces/camera/ service.cpp->cameraprovider_2_4.cpp(HIDL_FETCH_ ...

  8. AS3 抽象类与接口

    抽象类(Abstract)是不能被实例化的类,往往不给出具体代码的实现,归纳子类共同特征和行为. (AS3没有abstract关键字,但也可以定义概念上的抽象类.) 在理想的继承架构设计里,具体类都继 ...

  9. 《C专家编程》学习笔记

    Chapter 1 char *cp; const char *ccp; ccp = cp; ccp是有指向有const 限定符的char 的指针,cp是指向没有限定符修饰的指针:左操作数具有右操作数 ...

最新文章

  1. eclipse中中文字体过小
  2. Ecol. Lett.:写给实践生态学家的β多样性分析指南 | 朝花夕拾
  3. 机器学习开发者的现代化路径:不需要从统计学微积分开始
  4. python创建列表_python创建与遍历List二维列表的方法
  5. 2021暑假每日一题 【week8 完结】
  6. dubbo的学习使用,第一章
  7. python日志_python日志处理
  8. Shell重定向的概念笔记
  9. 配置java编译环境
  10. idea 2018.3.5版本
  11. 学习LaTex:常用符号总结
  12. Xshell连接VMware虚拟机(CentOs7)
  13. springboot使用@Async实现异步操作
  14. 招银网络Java后端笔试题
  15. twitter 授权过程
  16. 个人博客登录注册部分
  17. canvas绘图树状图
  18. 【c++】Lanelet2 Examples笔记(一)
  19. python编程实例教程-Python程序设计实例教程
  20. java英文介绍范文_java的英文自我介绍范文

热门文章

  1. 三星I9220获取ROOT权限
  2. C语言中#undef的用法
  3. 数据库的五种索引类型
  4. 基于Android studio的备忘录app设计
  5. VulnHub靶场----Hackable_3
  6. 数据中心主机房内部各部位装修材料防火等级A级的溯源
  7. Keil MDK-ARM 5.29 pack 百度网盘 分享连接
  8. android开源界面库,使用 Wear 界面库
  9. linux拷贝目录并修改名字,linux复制文件夹、重命名文件夹、删除文件夹
  10. opencv 图片旋转90度