RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Buildroot什么時候需要完全重新構(gòu)建規(guī)則

嵌入式小生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-11-02 09:08 ? 次閱讀

一、什么時候需要完全重新構(gòu)建

在使用buildroot過程中,當通過make menuconfig、make xconfig或其他配置工具更改了系統(tǒng)配置時,Buildroot是不會去檢測哪些部分需要重建。

在某些情況下,Buildroot應該重建整個系統(tǒng),但在一些情況下,僅應重建某一個軟件包,由于構(gòu)建目標的多樣性和復雜性,所以目前發(fā)布的buildroot不支持對更新的自動檢測。

作為使用者來說,應該知道在什么樣的情況下需要進行完全重新構(gòu)建,下面列出了一些規(guī)則:

(1)當更改目標體系的架構(gòu)配置時,需要完全重新構(gòu)建。

例如:修改體系架構(gòu)、二進制格式或浮點策略等,這些更改會影響整個系統(tǒng)。也就是“Target options”項下的配置,如下圖所示:

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

(2)更改工具鏈配置時,通常是需要完全重新構(gòu)建。

例如:更改編譯器版本、C庫的類型或配置、其他一些基本配置項時,因為這些修改會影響整個系統(tǒng)。

(3)在配置中新增軟件包時,有些情況下完全重新構(gòu)建。

如果此軟件包從未構(gòu)建過,這時候buildroot能自動檢測并對它進行構(gòu)建;如果軟件包已經(jīng)構(gòu)建過了,在我們重新修改配置以支持其他軟件包功能,這時buildroot是不會重新構(gòu)建它們的。如果我們知道應該重新哪些軟件包,這可以重新構(gòu)建它們,即手動重建,如果不知道需要重建哪些軟件包,則需要完全重建。

例如:假設(shè)構(gòu)建了一個具有ctorrent軟件包支持的系統(tǒng),但沒有openssl。系統(tǒng)工作后,才意識到想要ctorrent提供SSL的支持,因此在Buildroot配置中啟用了openssl軟件包并重新進行構(gòu)建。這時候Buildroot 將檢測到 openssl 應該被構(gòu)建,并對它進行構(gòu)建,但是它不會檢測到應該重新構(gòu)建 ctorrent結(jié)合openssl 軟件包來增加OpenSSL支持。這時候則需要進行完全重建,或者重建ctorrent軟件包本身。

(4)當從配置中刪除軟件包時,Buildroot不會執(zhí)行任何操作。它不會從目標根文件系統(tǒng)或工具鏈sysroot中刪除該軟件包安裝的文件,所以需要完全重新構(gòu)建才能移除此軟件包。

(5)更改軟件包子選項時,不會自動重建軟件包。在實際使用中,進行此類更改后,只需要重建該軟件包就足夠了,如果啟用子選項,然后向該軟件包中添加了一些對已構(gòu)建的另一個軟件包有用的功能時,這時候則需要完全重建。

(6)更改根文件系統(tǒng)的目錄結(jié)構(gòu)時,需要完全重建。

(7)重建或刪除由“FOO_DEPENDENCIES”列出的軟件包時,軟件包foo不會自動重建,這時候則需要完全重新構(gòu)建。

一般來說,當我們遇到構(gòu)建錯誤并且不確定所做的配置更改可能會帶來的影響時,這時候就應該進行完全重新構(gòu)建了。

二、如何完全重新構(gòu)建

使用make clean all命令清除全部配置,重新編譯構(gòu)建即可。

三、如何重建軟件包

Buildroot 在尚未從頭開始重建的情況下不支持刪除軟件包。這是因為 Buildroot 無法跟蹤軟件包在output/staging和output/target目錄中安裝了哪些文件,不能清楚的知道軟件包根據(jù)另一個軟件包的用途進行了哪些編譯。

從頭開始重建單個軟件包最簡單的方法是:在output/build中刪除對應軟件包的構(gòu)建目錄。然后,Buildroot將從頭開始重新提取、重新配置、重新編譯和重新安裝這個軟件包。我們可以使用make -dirclean命令來執(zhí)行此操作。

如果只想從build構(gòu)建步驟重新啟動軟件包的構(gòu)建過程,則可以運行make -rebuild,該條命令將重新啟動軟件包的編譯和安裝過程,但不會從頭開始:它只是重新執(zhí)行軟件包內(nèi)部的make和make install。

如果想從 configuration 配置步驟重新啟動軟件包的構(gòu)建過程,可以運行make -reconfigure,這條命令將重新啟動軟件包的配置、編譯和安裝過程。

雖然-rebuild包含-reinstall,-reconfigure 包含-rebuild,但這些命令以及只作用于指定的軟件包,并不會創(chuàng)建新的根文件系統(tǒng)鏡像。如果需要重新創(chuàng)建根文件系統(tǒng),則需要在終端運行make或make all。

在buildroot的內(nèi)部,本質(zhì)上是通過創(chuàng)建stamp文件來跟蹤在每個軟件包中完成了哪些構(gòu)建步驟,該文件保存在軟件包構(gòu)建目錄中,位于output/build/-/,命名為.stamp_。上面介紹的命令只需要操作這些stamp文件就可以強制buildroot來重新執(zhí)行軟件包構(gòu)建過程中的某些特定步驟。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1623

    瀏覽量

    49108
  • OpenSSL
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    8677
  • Buildroot
    +關(guān)注

    關(guān)注

    1

    文章

    48

    瀏覽量

    1394

原文標題:buildroot使用筆記-04 | 重建的規(guī)則和操作

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么時候需要天線阻抗匹配

    什么時候需要天線阻抗匹配?環(huán)形天線的等效參數(shù)怎么得到。。求大神解釋
    發(fā)表于 08-12 19:11

    請問DMA什么時候需要設(shè)置為遞增?

    DMA可設(shè)置 外設(shè)地址寄存器遞增 ,外設(shè)地址寄存器不變DMA可設(shè)置 內(nèi)存地址寄存器遞增 ,內(nèi)存地址寄存器不變那到底什么時候需要設(shè)置為遞增,什么時候設(shè)置為不變呢?最好能舉例說明一下。
    發(fā)表于 04-30 04:35

    什么時候需要aFPGA的冷卻風扇?

    你好,在什么時候需要aFPGA的冷卻風扇。我能從功耗中得出它嗎?謝謝。
    發(fā)表于 07-31 11:25

    cache的應用——什么時候需要刷cache1

    文章目錄1、cache的應用——什么時候需要刷cache1、cache的應用——什么時候需要刷cache(1)、cpu在往內(nèi)存(src地址)寫數(shù)據(jù)時,cache中會緩存這些數(shù)據(jù),并沒有
    發(fā)表于 07-22 08:43

    怎樣使用buildroot構(gòu)建根文件系統(tǒng)

    使用buildroot構(gòu)建根文件系統(tǒng)一、buildroot介紹使用busybox 構(gòu)建文件系統(tǒng)的時候,busybox 僅僅只是幫我們
    發(fā)表于 11-05 08:13

    如何使用buildroot編譯構(gòu)建系統(tǒng)?

    如何使用buildroot編譯構(gòu)建系統(tǒng)?
    發(fā)表于 12-28 07:14

    BuildRoot什么時候需要全部重新編譯某一個包

    BuildRoot如何增加一個包呢?BuildRoot如何單獨編譯某一個包?BuildRoot什么時候需要全部
    發(fā)表于 02-21 06:38

    使用Buildroot構(gòu)建根文件系統(tǒng)的方法簡析

    1、怎么使用Buildroot構(gòu)建根文件系統(tǒng)?  制作根文件系統(tǒng)有歸多種方法:  使用Busybox手工制作  Busybox本身包含了很了Linux命令,但是要編譯其他程序的話需要手工下載、編譯
    發(fā)表于 11-04 15:41

    RK3588 ubuntu什么時候能支持mpi

    目前的測試buildroot下mpi例子可以工作,debian和ubuntu下運行報egl錯誤,請問ubuntu下預計什么時候能支持。
    發(fā)表于 08-11 16:53

    串口接線什么時候直連,什么時候要交叉,有沒有什么規(guī)則?

    串口接線,什么時候直連,什么時候要交叉,有沒有什么規(guī)則
    發(fā)表于 10-08 06:49

    請問51的P0口什么時候要上拉電阻什么時候需要?

    求教大神,51的P0口什么時候要上拉電阻什么時候需要呢?
    發(fā)表于 11-09 08:02

    什么時候需要HDMI接口?

    什么時候需要HDMI接口? HDMI是近年來隨著數(shù)字電視、高清電視和平板電視興起而出現(xiàn)的一種新型接口。  目前,很多平板電視都開始配備HDMI
    發(fā)表于 03-26 10:41 ?2579次閱讀

    iPhone7什么時候上市?

    iPhone7什么時候上市?發(fā)布時間/配置完全匯總
    發(fā)表于 08-09 18:01 ?1297次閱讀

    嵌入式Linux學習之旅(10)— 使用buildroot構(gòu)建根文件系統(tǒng)

    使用buildroot構(gòu)建根文件系統(tǒng)一、buildroot介紹使用busybox 構(gòu)建文件系統(tǒng)的時候,busybox 僅僅只是幫我們
    發(fā)表于 11-02 14:36 ?10次下載
    嵌入式Linux學習之旅(10)— 使用<b class='flag-5'>buildroot</b><b class='flag-5'>構(gòu)建</b>根文件系統(tǒng)

    什么時候需要進行網(wǎng)絡(luò)線纜測試?

    什么時候需要進行網(wǎng)絡(luò)線纜測試?值得思考,以及測試方案如何?
    發(fā)表于 10-09 11:01 ?0次下載
    RM新时代网站-首页