初识Buildroot
轉自CSDN ,記錄是為了作者小編學習需要
作者:xixihaha331
什么是buildroot
Buildroot是Linux平臺上一個構建嵌入式Linux系統的框架。整個Buildroot是由Makefile腳本和Kconfig配置文件構成的。你可以和編譯Linux內核一樣,通過buildroot配置,menuconfig修改,編譯出一個完整的可以直接燒寫到機器上運行的Linux系統軟件(包含boot、kernel、rootfs以及rootfs中的各種庫和應用程序)。
buildroot目錄結構
1.buildroot/package/下面放著應用軟件的配置文件,每個應用軟件的配置文件有Config.in和soft_name.mk其中soft_name.mk(這種其實就Makefile腳本的自動構建腳本)文件可以去下載應用軟件的包。?
2.buildroot/output/是編譯出來的輸出文件夾,里面的build/目錄存放著解壓后的各種軟件包編譯完后的現場。host/目錄放著制作好的編譯工具鏈,target/ 目錄是用來制作rootfs的,里面放著Linux系統基本的目錄結構,以及各種編譯好的應用庫和bin可執行文件。Images/目錄下就是最終生成的可燒寫到板子上的各種image。?
3.buildroot/dl存放下載的源碼包及應用軟件的壓縮包?
4.buildroot/fs放各種文件系統的源代碼?
5.buildroot/fs/skeleton放生成文件系統鏡像的地方,及板子里面的系統?
6.buildroot/linux/ 存放著Linux kernel的自動構建腳本。?
7.buildroot/configs放置開發板的一些配置參數。
8.buildroot/dl/目錄存在從官網上下載的開源軟件包,第一次下載后,下次就不會再去從官網下載了,而是從dl/目錄下拿開源包,以節約時間。?
9.buildroot/docs/ 存放相關的參考文檔。
?
10.buildroot/arch/ 目錄存放CPU架構相關的配置腳本,如arm/mips/x86 ,這些CPU相關的配置,在制作工具鏈,編譯boot和內核時很關鍵。
buildroot工作原理
Buildroot原則上是一個自動構建框架,雖然說u-boot、linux kernel這些經典的開源軟件包的構建腳本,官方社區都在幫你實現了,但是有時候你還是需要加入你自己特有的app_pkg軟件包,用以構建自己的應用。?
Buildroot提供了函數框架和變量命令框架(下一篇文章將介紹細節),采用它的框架編寫的app_pkg.mk這種Makefile格式的自動構建腳本,將被package/pkg-generic.mk 這個核心腳本展開填充到buildroot主目錄下的Makefile中去。最后make all執行Buildroot主目錄下的Makefile,生成你想要的image。
package/pkg-generic.mk中通過調用同目錄下的pkg-download.mk、pkg-utils.mk文件,已經幫你自動實現了下載、解壓、依賴包下載編譯等一系列機械化的流程。你只要需要按照格式寫Makefile腳app_pkg.mk,填充下載地址,鏈接依賴庫的名字等一些特有的構建細節即可。
總而言之,Buildroot本身提供構建流程的框架,開發者按照格式寫腳本,提供必要的構建細節,配置整個系統,最后自動構建出你的系統。?
buildroot/packages里面有豐富的應用軟件的配置文件,可以通過make menuconfig,出現圖形化界面進行選擇豐富的開源軟件包的編譯和構建。
在Buildroot論壇中,了解到關于STM32F4系列芯片運行Nuttx系統的相關介紹:
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
感謝完成閱讀,我是喜歡打籃球的寫代碼的籃球球癡,這個是我的公眾號,感謝你關注并支持。我從大學開始接觸電子和嵌入式軟件知識,至今,已經畢業工作了9年,我喜歡嵌入式,也愿意從事這個行業。不管是從技術還是職場經驗,都積累了足夠多的經驗,目前在一個非常優秀的團隊中做開發工作。
很高興認識每一個對技術努力,對人用心的朋友。
總結
以上是生活随笔為你收集整理的初识Buildroot的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS——常用的手势总结
- 下一篇: 原来,我有这样期望