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

一、什么时候需要完全重新构建
在使用buildroot过程中,当通过make menuconfig、make xconfig或其他配置工具更改了系统配置时,buildroot是不会去检测哪些部分需要重建。
在某些情况下,buildroot应该重建整个系统,但在一些情况下,仅应重建某一个软件包,由于构建目标的多样性和复杂性,所以目前发布的buildroot不支持对更新的自动检测。
作为使用者来说,应该知道在什么样的情况下需要进行完全重新构建,下面列出了一些规则:
(1)当更改目标体系的架构配置时,需要完全重新构建。
例如:修改体系架构、二进制格式或浮点策略等,这些更改会影响整个系统。也就是“target options”项下的配置,如下图所示:
(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来重新执行软件包构建过程中的某些特定步骤。


华为在英国媒体发起闪电战 台积电已经做好最坏打算
无人机巡检电网,如何一键实现“自动驾驶”?
车载一次DC/DC转换器三大特点,匹配汽车低功耗化需求!
弱电人必会的Linux常用命令
我国服务机器人行业还处于初级发展阶段,未来发展前景广阔
Buildroot什么时候需要完全重新构建规则
运用1394总线解决复杂的实时连续的图像采集过程
人工智能课程学什么
多协议转BACnet网关BA115是一款转为BACnet协议对接BA系统而设计的协议转换网关
KUKA机器人程序中铣削清零方式介绍
汽油动力土壤采样器的用途及特点
探一探区块链技术背后的历史,如何一步步走到今天的呢?
车载设备的电磁兼容设计方案
关于集成电路发展的介绍和应用
多种品牌的智能马桶的性能对比
2019中国综合PCB百强排行榜
iPhone原装20W PD充电器为iPad2020充电时均支持Apple2.4A充电
2020年中国工业互联网增加值规模将近3.8万亿元,规模呈逐年增长态势
重拳出击 贸泽电子与Sierra Monitor 签订全球分销协议
智能化妆镜给你打造愉悦的化妆环境