一、什么時候需要完全重新構建
在使用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
如果只想從build構建步驟重新啟動軟件包的構建過程,則可以運行make
如果想從 configuration 配置步驟重新啟動軟件包的構建過程,可以運行make
雖然
在buildroot的內部,本質上是通過創建stamp文件來跟蹤在每個軟件包中完成了哪些構建步驟,該文件保存在軟件包構建目錄中,位于output/build/
審核編輯:劉清
-
編譯器
+關注
關注
1文章
1642瀏覽量
49283 -
OpenSSL
+關注
關注
0文章
21瀏覽量
8742 -
Buildroot
+關注
關注
1文章
48瀏覽量
1415
原文標題:buildroot使用筆記-04 | 重建的規則和操作
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論