<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    1585

    瀏覽量

    48730
  • OpenSSL
    +關注

    關注

    0

    文章

    20

    瀏覽量

    8598
  • Buildroot
    +關注

    關注

    1

    文章

    46

    瀏覽量

    1305

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    什么時候需要進行信號完整性分析

    什么時候需要進行信號完整性分析
    發表于 12-10 10:30

    請問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

    什么時候該使用OS

    什么時候該使用OS?前面我們介紹了嵌入式基于OS的軟件設計和基于前后臺系統的軟件設計,那麼在什么情況下需要使用OS呢?我發現有好多開發人員把OS用于項目的開發,都有一種心態,似乎他們的系統只有使用過
    發表于 12-16 06:55

    如何使用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

    iPhone7什么時候上市?

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

    嵌入式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>根文件系統
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>