首頁/ 汽車/ 正文

小白專用,Buildroot 超簡單入門指南 | 開源軟體

使用 Buildroot, 讓嵌入式Linux系統構建更加便捷。

Buildroot 是什麼?

Buildroot 是 Linux 平臺上一個開源的嵌入式 Linux 系統自動構建框架。整個Buildroot是由 Makefile 指令碼和 Kconfig 配置檔案構成的。你可以和編譯Linux核心一樣,透過 buildroot 配置,menuconfig 修改,編譯出一個完整的可以直接燒寫到機器上執行的Linux系統軟體(包含boot、kernel、rootfs以及rootfs中的各種庫和應用程式)。

Buildroot 使用演示

以 Buildroot 官方開源社群維護的經典 mini2440 開發板的專案為例,演示其使用方法。

1) 先從 Buildroot 官網下載最新的穩定版壓縮包,放到 Ubuntu 系統下解壓。

2) 進入解壓後的 Buildroot 主目錄,其目錄結構圖如下。

小白專用,Buildroot 超簡單入門指南 | 開源軟體

3) make mini2440_defconfig

4) make all

5) 編譯完,生成的可燒寫檔案映象,主目錄的在output/images/ 資料夾下,截圖如下:

小白專用,Buildroot 超簡單入門指南 | 開源軟體

看起來,只要執行make *config和make all的命令,u-boot/linuxkernel/rootfs 都能一次性編譯好,而且編出來的映象可以直接燒到mini2440開發板中執行,以後製作uboot, 編譯kenrel, 編譯各種app, 製作rootfs的繁瑣工作都可以自動化一步搞定,媽媽再也不用擔心我構建過程出錯了。Buildroot不愧是自動構建神器。

Buildroot 的優勢

Buildroot大概有以下幾點優勢:

a)。 可以通在make *config 之後,make menuconfig 配置需要編譯的軟體包,menuconfig目錄如下:

小白專用,Buildroot 超簡單入門指南 | 開源軟體

小白專用,Buildroot 超簡單入門指南 | 開源軟體

實際上,uboot, linux kernel 還有 ffmpeg等這些應用包,並不是強制都有編譯出來的,都可以透過make menuconfig進行選擇,編譯和構建。Buildroot原則上是提供自動構建框架,具體要編譯什麼包,都是使用者自己可以選擇的。

b)。 對豐富的開源應用軟體包的支援,誰說嵌入式軟體工程師都是搞核心驅動的,有了Buildroot, 這麼多開源應用都能移植構建到你的開發板中去,以下是Buildroot/package/ 目錄下支援的自動構建開源專案的截圖:

boost、python、ffmpeg、redis、opencv、opengl、webkit……這些開源應用軟體是不是耳熟能詳呢?沒錯,這些開源應用軟體包都可以在Buildroot下透過你的配置指令碼,自動完成官網下載à解壓à系統環境配置à編譯à安裝到根檔案系統等這一系列機械繁瑣的工作。

嵌入式物聯網需要學的東西真的非常多,千萬不要學錯了路線和內容,導致工資要不上去!

無償分享大家一個資料包,差不多150多G。裡面學習內容、面經、專案都比較新也比較全!某魚上買估計至少要好幾十。

點選這裡找小助理0元領取:嵌入式物聯網學習資料(頭條)

小白專用,Buildroot 超簡單入門指南 | 開源軟體

小白專用,Buildroot 超簡單入門指南 | 開源軟體

你不用再為某某開源軟體如何移植到我的Linux 開發板而到處在QQ群和論壇問人了,哪怕以後還要你自己開發的新的軟體包,所有繁瑣的移植工作,只要做了一次,都可以用Makefile寫成自動構建指令碼,移植工作做了一次,就不用做第二次了,交給Buildroot自動來做就可以了。

小白專用,Buildroot 超簡單入門指南 | 開源軟體

小白專用,Buildroot 超簡單入門指南 | 開源軟體

小白專用,Buildroot 超簡單入門指南 | 開源軟體

c)。 可以一塊開發板多次利用。一塊板子,可以配置成手機,機頂盒,監控器,路由器或者各種想不到的有意思的應用。沒錯,只要把相應的配置檔案加到configs/目錄下,下次編譯的時候,選擇該種配置,make all 。那麼馬上就可以構建出相應的可燒寫映象,燒錄的開發板中,讓你的開發板瞬間從手機變成路由器,無需每次耗時地移植和改動了。

小白專用,Buildroot 超簡單入門指南 | 開源軟體

d)。 團隊協作的利器。不用手把手告訴你的同事或者合作伙伴如果重頭構建某種系統的整個軟體包,把你配置好的Buildroot交給他,一切自動完成,不明白的步驟,看看各個軟體包的構建指令碼,瞬間一目瞭然。

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 超簡單入門指南 | 開源軟體

Buildroot 目錄結構簡介

Buildroot主目錄截圖如下,其中各個目錄存放的指令碼簡要介紹。

小白專用,Buildroot 超簡單入門指南 | 開源軟體

arch/

目錄存放CPU架構相關的配置指令碼,如arm/mips/x86 ,這些CPU相關的配置,在製作工具鏈,編譯boot和核心時很關鍵。

board/

目錄存放各種board 特有的一些配置指令碼,在構建系統時,board預設的boot和Linux kernel配置檔案,以及一些板相關特殊構建流程的指令碼,都在該目錄下,等待自動構建時呼叫。

boot/

目錄存在各種boot軟體的自動構建指令碼,不只是u-boot,還有grub等,也可以透過Buildroot來構建。

configs/

目錄存放這每種方案上層的全域性配置檔案,之前的make mini2440_defconfig實際上就是呼叫了該目錄下的mini2440方案的配置。該目錄下的配置檔案記錄著該機器平臺或者方案使用的工具欄,boot, kernel,各種應用軟體包的配置和是否編譯選擇的狀態,之前所說的某個特殊開發板整個系統的配置檔案,就在configs/目錄下。

dl/

目錄存在從官網上下載的開源軟體包,第一次下載後,下次就不會再去從官網下載了,而是從dl/目錄下拿開源包,以節約時間。

docs/

存放相關的參考文件。

fs/

存放著各種檔案系統的自動構建指令碼。

linux/

存放著Linux kernel的自動構建指令碼。

output/

是編譯出來的輸出資料夾,裡面的build/目錄存放著解壓後的各種軟體包編譯完後的現場。host/目錄放著製作好的編譯工具鏈,target/ 目錄是用來製作rootfs的,裡面放著Linux系統基本的目錄結構,以及各種編譯好的應用庫和bin可執行檔案。Images/目錄下就是最終生成的可燒寫到板子上的各種image。

package/

目錄存放著各種第三方開源應用軟體包的自動編譯構建指令碼,這些構建指令碼一般都是經過測試,能夠構建出相應的軟體包的。

support/

目錄存放著一些固定的流程指令碼,以備構建時呼叫執行。

system/

目錄存放著檔案系統目錄的和裝置節點的模板,這些模板會被複製到 output/ 目錄下,用於製作根檔案系統rootfs。

toolchain/

目錄中存放著各種製作工具鏈的指令碼,buildroot可以選擇從0開始,用gcc和linux 核心,glibc、uclibc庫等原材料製作一個自己工具鏈,也可以下載第三方製作好的開源工具。

原文連結:https://mp。weixin。qq。com/s/q9nmqZb1zhaiiFn2IkFlnA

文章轉載自:老吳嵌入式

文章來源於:小白專用,Buildroot 超簡單入門指南 | 開源軟體

原文連結:小白專用,Buildroot 超簡單入門指南 | 開源軟體

版權宣告:本文來源於網路,免費傳達知識,版權歸原作者所有,如涉及作品版權問題,請聯絡我進行刪除

相關文章

頂部