一、什么時候需要完全重新構(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”項下的配置,如下圖所示:
(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
如果只想從build構(gòu)建步驟重新啟動軟件包的構(gòu)建過程,則可以運行make
如果想從 configuration 配置步驟重新啟動軟件包的構(gòu)建過程,可以運行make
雖然
在buildroot的內(nèi)部,本質(zhì)上是通過創(chuàng)建stamp文件來跟蹤在每個軟件包中完成了哪些構(gòu)建步驟,該文件保存在軟件包構(gòu)建目錄中,位于output/build/
審核編輯:劉清
-
編譯器
+關(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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論