0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Buildroot什么时候需要完全重新构建规则

嵌入式小生 来源:嵌入式小生 作者:iriczhao 2022-11-02 09:08 次阅读

一、什么时候需要完全重新构建

在使用buildroot过程中,当通过make menuconfig、make xconfig或其他配置工具更改了系统配置时,Buildroot是不会去检测哪些部分需要重建。

在某些情况下,Buildroot应该重建整个系统,但在一些情况下,仅应重建某一个软件包,由于构建目标的多样性和复杂性,所以目前发布的buildroot不支持对更新的自动检测。

作为使用者来说,应该知道在什么样的情况下需要进行完全重新构建,下面列出了一些规则:

(1)当更改目标体系的架构配置时,需要完全重新构建

例如:修改体系架构、二进制格式或浮点策略等,这些更改会影响整个系统。也就是“Target options”项下的配置,如下图所示:

271b9382-5a4a-11ed-a3b6-dac502259ad0.png

(2)更改工具链配置时,通常是需要完全重新构建

例如:更改编译器版本、C库的类型或配置、其他一些基本配置项时,因为这些修改会影响整个系统。

(3)在配置中新增软件包时,有些情况下完全重新构建

如果此软件包从未构建过,这时候buildroot能自动检测并对它进行构建;如果软件包已经构建过了,在我们重新修改配置以支持其他软件包功能,这时buildroot是不会重新构建它们的。如果我们知道应该重新哪些软件包,这可以重新构建它们,即手动重建,如果不知道需要重建哪些软件包,则需要完全重建。

例如:假设构建了一个具有ctorrent软件包支持的系统,但没有openssl。系统工作后,才意识到想要ctorrent提供SSL的支持,因此在Buildroot配置中启用了openssl软件包并重新进行构建。这时候Buildroot 将检测到 openssl 应该被构建,并对它进行构建,但是它不会检测到应该重新构建 ctorrent结合openssl 软件包来增加OpenSSL支持。这时候则需要进行完全重建,或者重建ctorrent软件包本身。

(4)当从配置中删除软件包时,Buildroot不会执行任何操作。它不会从目标根文件系统或工具链sysroot中删除该软件包安装的文件,所以需要完全重新构建才能移除此软件包。

(5)更改软件包子选项时,不会自动重建软件包。在实际使用中,进行此类更改后,只需要重建该软件包就足够了,如果启用子选项,然后向该软件包中添加了一些对已构建的另一个软件包有用的功能时,这时候则需要完全重建。

(6)更改根文件系统的目录结构时,需要完全重建

(7)重建或删除由“FOO_DEPENDENCIES”列出的软件包时,软件包foo不会自动重建,这时候则需要完全重新构建。

一般来说,当我们遇到构建错误并且不确定所做的配置更改可能会带来的影响时,这时候就应该进行完全重新构建了。

二、如何完全重新构建

使用make clean all命令清除全部配置,重新编译构建即可。

三、如何重建软件包

Buildroot 在尚未从头开始重建的情况下不支持删除软件包。这是因为 Buildroot 无法跟踪软件包在output/staging和output/target目录中安装了哪些文件,不能清楚的知道软件包根据另一个软件包的用途进行了哪些编译。

从头开始重建单个软件包最简单的方法是:在output/build中删除对应软件包的构建目录。然后,Buildroot将从头开始重新提取、重新配置、重新编译和重新安装这个软件包。我们可以使用make -dirclean命令来执行此操作。

如果只想从build构建步骤重新启动软件包的构建过程,则可以运行make -rebuild,该条命令将重新启动软件包的编译和安装过程,但不会从头开始:它只是重新执行软件包内部的make和make install。

如果想从 configuration 配置步骤重新启动软件包的构建过程,可以运行make -reconfigure,这条命令将重新启动软件包的配置、编译和安装过程。

虽然-rebuild包含-reinstall,-reconfigure 包含-rebuild,但这些命令以及只作用于指定的软件包,并不会创建新的根文件系统镜像。如果需要重新创建根文件系统,则需要在终端运行make或make all。

在buildroot的内部,本质上是通过创建stamp文件来跟踪在每个软件包中完成了哪些构建步骤,该文件保存在软件包构建目录中,位于output/build/-/,命名为.stamp_。上面介绍的命令只需要操作这些stamp文件就可以强制buildroot来重新执行软件包构建过程中的某些特定步骤。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1614

    浏览量

    49002
  • OpenSSL
    +关注

    关注

    0

    文章

    20

    浏览量

    8654
  • Buildroot
    +关注

    关注

    1

    文章

    48

    浏览量

    1373

原文标题:buildroot使用笔记-04 | 重建的规则和操作

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么时候需要天线阻抗匹配

    什么时候需要天线阻抗匹配?环形天线的等效参数怎么得到。。求大神解释
    发表于 08-12 19:11

    请问DMA什么时候需要设置为递增?

    DMA可设置 外设地址寄存器递增 ,外设地址寄存器不变DMA可设置 内存地址寄存器递增 ,内存地址寄存器不变那到底什么时候需要设置为递增,什么时候设置为不变呢?最好能举例说明一下。
    发表于 04-30 04:35

    什么时候需要aFPGA的冷却风扇?

    你好,在什么时候需要aFPGA的冷却风扇。我能从功耗中得出它吗?谢谢。
    发表于 07-31 11:25

    cache的应用——什么时候需要刷cache1

    文章目录1、cache的应用——什么时候需要刷cache1、cache的应用——什么时候需要刷cache(1)、cpu在往内存(src地址)写数据时,cache中会缓存这些数据,并没有
    发表于 07-22 08:43

    怎样使用buildroot构建根文件系统

    使用buildroot构建根文件系统一、buildroot介绍使用busybox 构建文件系统的时候,busybox 仅仅只是帮我们
    发表于 11-05 08:13

    如何使用buildroot编译构建系统?

    如何使用buildroot编译构建系统?
    发表于 12-28 07:14

    BuildRoot什么时候需要全部重新编译某一个包

    BuildRoot如何增加一个包呢?BuildRoot如何单独编译某一个包?BuildRoot什么时候需要全部
    发表于 02-21 06:38

    使用Buildroot构建根文件系统的方法简析

    1、怎么使用Buildroot构建根文件系统?  制作根文件系统有归多种方法:  使用Busybox手工制作  Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载、编译
    发表于 11-04 15:41

    RK3588 ubuntu什么时候能支持mpi

    目前的测试buildroot下mpi例子可以工作,debian和ubuntu下运行报egl错误,请问ubuntu下预计什么时候能支持。
    发表于 08-11 16:53

    串口接线什么时候直连,什么时候要交叉,有没有什么规则

    串口接线,什么时候直连,什么时候要交叉,有没有什么规则
    发表于 10-08 06:49

    请问51的P0口什么时候要上拉电阻什么时候需要

    求教大神,51的P0口什么时候要上拉电阻什么时候需要呢?
    发表于 11-09 08:02

    什么时候需要HDMI接口?

    什么时候需要HDMI接口? HDMI是近年来随着数字电视、高清电视和平板电视兴起而出现的一种新型接口。  目前,很多平板电视都开始配备HDMI
    发表于 03-26 10:41 2558次阅读

    iPhone7什么时候上市?

    iPhone7什么时候上市?发布时间/配置完全汇总
    发表于 08-09 18:01 1283次阅读

    嵌入式Linux学习之旅(10)— 使用buildroot构建根文件系统

    使用buildroot构建根文件系统一、buildroot介绍使用busybox 构建文件系统的时候,busybox 仅仅只是帮我们
    发表于 11-02 14:36 10次下载
    嵌入式Linux学习之旅(10)— 使用<b class='flag-5'>buildroot</b><b class='flag-5'>构建</b>根文件系统

    什么时候需要进行网络线缆测试?

    什么时候需要进行网络线缆测试?值得思考,以及测试方案如何?
    发表于 10-09 11:01 0次下载