初识Buildroot
轉(zhuǎn)自CSDN ,記錄是為了作者小編學(xué)習(xí)需要
作者:xixihaha331
什么是buildroot
Buildroot是Linux平臺上一個構(gòu)建嵌入式Linux系統(tǒng)的框架。整個Buildroot是由Makefile腳本和Kconfig配置文件構(gòu)成的。你可以和編譯Linux內(nèi)核一樣,通過buildroot配置,menuconfig修改,編譯出一個完整的可以直接燒寫到機(jī)器上運行的Linux系統(tǒng)軟件(包含boot、kernel、rootfs以及rootfs中的各種庫和應(yīng)用程序)。
buildroot目錄結(jié)構(gòu)
1.buildroot/package/下面放著應(yīng)用軟件的配置文件,每個應(yīng)用軟件的配置文件有Config.in和soft_name.mk其中soft_name.mk(這種其實就Makefile腳本的自動構(gòu)建腳本)文件可以去下載應(yīng)用軟件的包。?
2.buildroot/output/是編譯出來的輸出文件夾,里面的build/目錄存放著解壓后的各種軟件包編譯完后的現(xiàn)場。host/目錄放著制作好的編譯工具鏈,target/ 目錄是用來制作rootfs的,里面放著Linux系統(tǒng)基本的目錄結(jié)構(gòu),以及各種編譯好的應(yīng)用庫和bin可執(zhí)行文件。Images/目錄下就是最終生成的可燒寫到板子上的各種image。?
3.buildroot/dl存放下載的源碼包及應(yīng)用軟件的壓縮包?
4.buildroot/fs放各種文件系統(tǒng)的源代碼?
5.buildroot/fs/skeleton放生成文件系統(tǒng)鏡像的地方,及板子里面的系統(tǒng)?
6.buildroot/linux/ 存放著Linux kernel的自動構(gòu)建腳本。?
7.buildroot/configs放置開發(fā)板的一些配置參數(shù)。
8.buildroot/dl/目錄存在從官網(wǎng)上下載的開源軟件包,第一次下載后,下次就不會再去從官網(wǎng)下載了,而是從dl/目錄下拿開源包,以節(jié)約時間。?
9.buildroot/docs/ 存放相關(guān)的參考文檔。
?
10.buildroot/arch/ 目錄存放CPU架構(gòu)相關(guān)的配置腳本,如arm/mips/x86 ,這些CPU相關(guān)的配置,在制作工具鏈,編譯boot和內(nèi)核時很關(guān)鍵。
buildroot工作原理
Buildroot原則上是一個自動構(gòu)建框架,雖然說u-boot、linux kernel這些經(jīng)典的開源軟件包的構(gòu)建腳本,官方社區(qū)都在幫你實現(xiàn)了,但是有時候你還是需要加入你自己特有的app_pkg軟件包,用以構(gòu)建自己的應(yīng)用。?
Buildroot提供了函數(shù)框架和變量命令框架(下一篇文章將介紹細(xì)節(jié)),采用它的框架編寫的app_pkg.mk這種Makefile格式的自動構(gòu)建腳本,將被package/pkg-generic.mk 這個核心腳本展開填充到buildroot主目錄下的Makefile中去。最后make all執(zhí)行Buildroot主目錄下的Makefile,生成你想要的image。
package/pkg-generic.mk中通過調(diào)用同目錄下的pkg-download.mk、pkg-utils.mk文件,已經(jīng)幫你自動實現(xiàn)了下載、解壓、依賴包下載編譯等一系列機(jī)械化的流程。你只要需要按照格式寫Makefile腳app_pkg.mk,填充下載地址,鏈接依賴庫的名字等一些特有的構(gòu)建細(xì)節(jié)即可。
總而言之,Buildroot本身提供構(gòu)建流程的框架,開發(fā)者按照格式寫腳本,提供必要的構(gòu)建細(xì)節(jié),配置整個系統(tǒng),最后自動構(gòu)建出你的系統(tǒng)。?
buildroot/packages里面有豐富的應(yīng)用軟件的配置文件,可以通過make menuconfig,出現(xiàn)圖形化界面進(jìn)行選擇豐富的開源軟件包的編譯和構(gòu)建。
在Buildroot論壇中,了解到關(guān)于STM32F4系列芯片運行Nuttx系統(tǒng)的相關(guān)介紹:
In case anyone is interested....
I modified buildroot to create a distribution for the STM32F4 processor. (It should be fairly portable to different Cortex-M processors though, the STM32F4 is the only one I've tested so far).?
So far it:
Builds the toolchain
Builds a modified Nuttx RTOS
Builds the icsp tools for programming and debugging (openocd/gdb)?
It also integrates the filesystem buildroot generates into the Nuttx kernel so it shows up in Nuttx's filesystem.?
It still has a ways to go, but right now it builds everything and works on my hardware.?
So far I've tested it on hardware I built, and on the STM32F407 discovery board with the attached baseboard.?
You can find instructions here?
http://www.vxmdesign.com/STM32.html
The git repo is?
https://github.com/vxmdesign/prjpluto.git?
and vdsc_defconfig is the config for the discovery board.?
Happy programming!
-Chris
感謝完成閱讀,我是喜歡打籃球的寫代碼的籃球球癡,這個是我的公眾號,感謝你關(guān)注并支持。我從大學(xué)開始接觸電子和嵌入式軟件知識,至今,已經(jīng)畢業(yè)工作了9年,我喜歡嵌入式,也愿意從事這個行業(yè)。不管是從技術(shù)還是職場經(jīng)驗,都積累了足夠多的經(jīng)驗,目前在一個非常優(yōu)秀的團(tuán)隊中做開發(fā)工作。
很高興認(rèn)識每一個對技術(shù)努力,對人用心的朋友。
總結(jié)
以上是生活随笔為你收集整理的初识Buildroot的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS——常用的手势总结
- 下一篇: 原来,我有这样期望