SDK工程目錄介紹:
工程目錄下有 buildroot、 app、 kernel、 u-boot、 device、 external、prebuilts、rockimg、tools 等目錄。
- buildroot:用于生成根文件系統(tǒng)、交叉編譯工具以及相關(guān)工具和應(yīng)用的管理;
- app:存放上層應(yīng)用 app;
- external :相關(guān)庫(kù),包括音頻、視頻、網(wǎng)絡(luò)等;
- kernel::kernel 代碼;
- device/rockchip/px3-se:存放開(kāi)機(jī)初始化腳本,存放第三方庫(kù)、 bin、 alsa、wifi等配置文件;另還存放編譯腳本;
- prebuilts:存放編譯 kernel 需要的 gcc 和交叉編譯工具 toolschain;
- rockimg:存放編譯輸出固件;
- tools:存放平臺(tái)工具。
當(dāng)前Buildroot版本為Buildroot 2016.08.1
- buildroot/package/:下面放著應(yīng)用軟件的配置文件,每個(gè)應(yīng)用軟件的配置文件有Config.in和soft_name.mk其中soft_name.mk(這種其實(shí)就Makefile腳本的自動(dòng)構(gòu)建腳本)文件可以去下載應(yīng)用軟件的包。
- buildroot/output/:是編譯出來(lái)的輸出文件夾,里面的build/目錄存放著解壓后的各種軟件包編譯完后的現(xiàn)場(chǎng)。host/目錄放著制作好的編譯工具鏈,target/ 目錄是用來(lái)制作rootfs的,里面放著Linux系統(tǒng)基本的目錄結(jié)構(gòu),以及各種編譯好的應(yīng)用庫(kù)和bin可執(zhí)行文件。Images/目錄下就是最終生成的可燒寫(xiě)到板子上的各種image。
- buildroot/dl/:存放下載的源碼包及應(yīng)用軟件的壓縮包
- buildroot/fs/:放各種文件系統(tǒng)的源代碼
- buildroot/fs/skeleton/:放生成文件系統(tǒng)鏡像的地方,及板子里面的系統(tǒng)
- buildroot/linux/:存放著Linux kernel的自動(dòng)構(gòu)建腳本。
- buildroot/configs/:放置開(kāi)發(fā)板的一些配置參數(shù),
- buildroot/docs/ :存放相關(guān)的參考文檔。
- buildroot/arch/ :目錄存放CPU架構(gòu)相關(guān)的配置腳本,如arm、mips、x86 ,這些CPU相關(guān)的配置,在制作工具鏈,編譯boot和內(nèi)核時(shí)很關(guān)鍵。
整個(gè)Buildroot是由Makefile腳本和Kconfig配置文件構(gòu)成的。你可以和編譯Linux內(nèi)核一樣。
$ make menuconfig
配置界面如下:
在Target packages里面添加和裁剪一些工具,按需求定制系統(tǒng)功能,常用到的qt5、ssh、vsftpd、wpa_supplicant、pppd等都可在里面配置。
需要了解的是:
- 進(jìn)行編譯時(shí),buildroot根據(jù)配置,會(huì)自動(dòng)從網(wǎng)絡(luò)獲取相關(guān)的軟件包,包括一些第三方庫(kù),插件,實(shí)用工具等,放在dl/目錄。
- 軟件包會(huì)解壓在output/build/目錄下,然后進(jìn)行編譯。
- 如果要修改軟件包的源碼,可以通過(guò)打補(bǔ)丁的方式進(jìn)行修改,補(bǔ)丁集中放在package/目錄,buildroot會(huì)在解壓軟件包時(shí)為其打上相應(yīng)的補(bǔ)丁。
Buildroot配置好后,可以直接運(yùn)行make
進(jìn)行編譯。
但是SDK下的app、device等目錄將不會(huì)被編譯到,所以配置完后,最好回到SDK根目錄,執(zhí)行./build_all.sh
進(jìn)行編譯。
如果在開(kāi)發(fā)過(guò)程中,針對(duì)output/build/某個(gè)包源碼進(jìn)行了修改,需要單獨(dú)重新編譯該軟件包,直接編譯Buildroot是不起效果的。
Buildroot在編譯某個(gè)包的時(shí)候,會(huì)將編譯的過(guò)程,通過(guò)一些標(biāo)志文件記錄下來(lái),保存在對(duì)應(yīng)的軟件包源碼的目錄里,這些標(biāo)志文件分別有:
這些標(biāo)識(shí)文件主要控制這個(gè)軟件包的下載,解壓,打包,配置,編譯,安裝等。具體詳細(xì)說(shuō)明可參考:
docs/manual/rebuilding-packages.txt
也可以直接看mk文件,了解原理:
package/pkg-generic.mk
要想重新執(zhí)行哪一個(gè)步驟,相應(yīng)的就要?jiǎng)h掉其對(duì)應(yīng)的標(biāo)志文件。假如你想重新編譯某軟件包源碼,只需刪掉該目錄下的.stamp_built和.stamp_target_installed,然后再編譯整個(gè)Buildroot就可以了。
當(dāng)然,Buildroot有更快捷的實(shí)現(xiàn)方法。
-
執(zhí)行
make show-targets
顯示出本次配置所要編譯所有的目標(biāo),即packages。 -
執(zhí)行
make
將構(gòu)建并安裝該軟件包及其依賴(lài)項(xiàng)。
同時(shí)我們還可以通過(guò)make
,對(duì)軟件包單獨(dú)調(diào)用構(gòu)建中的某一步驟,如下:
Package-specific: <pkg> - Build and install <pkg> and all its dependencies <pkg>-source - Only download the source files for <pkg> <pkg>-extract - Extract <pkg> sources <pkg>-patch - Apply patches to <pkg> <pkg>-depends - Build <pkg>'s dependencies <pkg>-configure - Build <pkg> up to the configure step <pkg>-build - Build <pkg> up to the build step <pkg>-graph-depends - Generate a graph of <pkg>'s dependencies <pkg>-dirclean - Remove <pkg> build directory <pkg>-reconfigure - Restart the build from the configure step <pkg>-rebuild - Restart the build from the build step
因此,如果我們想重新編譯xxx軟件包,執(zhí)行make xxx-rebuild
即可。
關(guān)于make的更多用法,可通過(guò)make help
獲得。
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213844 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6102瀏覽量
36308 -
Firefly
+關(guān)注
關(guān)注
2文章
542瀏覽量
8407 -
Buildroot
+關(guān)注
關(guān)注
1文章
50瀏覽量
1691
發(fā)布評(píng)論請(qǐng)先 登錄
ROC-RK3568-PC的Buildroot開(kāi)發(fā)案例分享
fireflyPX3-SE開(kāi)發(fā)板 介紹

Firefly-PX3-SE主板FAQ方案

Firefly關(guān)于PX3-SE程序SSH使用介紹

Firefly-PX3-SE系統(tǒng)ADB介紹

Firefly-PX3-SE--WIFI模塊及以太網(wǎng)簡(jiǎn)介
Firefly-PX3-SE編譯根文件系統(tǒng)簡(jiǎn)介
Firefly-PX3-SE核心板MaskRom模式

Firefly-PX3-SE燒錄升級(jí)固件
Firefly-PX3-SE主板串口介紹

fireflyROC-RK3308B主板CC-Buildroot開(kāi)發(fā)簡(jiǎn)介

Core PX3 SEJ固件Buildroot系統(tǒng)

評(píng)論