buildroot使用


buildroot是一套自動化構建工具,比yocto簡單。

項目地址:http://www.buildroot.org/

培訓資料地址:http://free-electrons.com/

附帶linux源碼在線閱讀地址:http://lxr.free-electrons.com/

 

配置編譯完buildroot生成根文件系統后,根文件系統可以在開發板上運行。

可以只用builroot生成根文件系統,只要在配置時所選的linux版本與目標板所用一致即可。

而相應的在宿主機則生成了針對目標板的開發環境,也可以生成SDK供其他開發人員使用。

 

有時候還需要進行一些配置來使用額外的函數接口。

1、如:要使用三星硬件編碼模塊,在4412提供的linux3.0版本里,不但要求開發板上的系統要在開機后加載MFC固件,在使用MFC提供的API時也需要MFC的頭文件和源文件才能使用API,這些文件不在板上提供的linux內核原文件里,而在該內核對應的安卓代碼中,可以用linux中的find指令在其中進行查找,注意選擇正確的源文件。要在本工程中使用MFC模塊,有兩種方法一種是將mfc模塊頭文件,源文件均放置在本工程文件夾中,在工程中進行包含。另一種是將頭文件放在編譯器默認的查找路徑上,比如如果是本地開發,那么本地編譯器會到/usr/include目錄下查找,而如果是交叉編譯,則交叉編譯器也需要一個根文件系統,在根文件系統的/usr/include目錄下去查找頭文件,用buildroot創建的交叉編譯工具鏈的根文件系統目錄就是buildroot-2014.05/output/host/usr/arm-gainuo-linux-gnueabihf/sysroot/,當然還可以在編譯時給GCC添加額外參數I,指定頭文件查找路徑。而如果因為商業性問題沒有源文件只提供了鏈接庫文件,那么同頭文件一樣,可以將鏈接庫文件放置連接器默認的查找路徑上,或者給GCC添加L參數指定庫路徑。而一般板商提供的編譯器是找不到根文件系統路徑的(我是不知道怎么弄的,如果交叉編譯工具鏈和本地工具鏈共用主機的根文件系統路徑,那么是很有可能因為版本問題導致頭文件不兼容問題的,比較麻煩)。

  比較而言還是把特定工程的頭文件和工程放在一起比較好。

buildroot把包括配置時選擇的各種包需要的庫都打包進生成的根文件系統里了,但這里面只有動態庫.so。而靜態庫.a只存在於主機為開發而產生的usr/lib里面,這樣在編譯基於特定包函數的程序時,程序將靜態編譯,在目標機不需要動態庫。

2、至於在配置時已選的包他們的頭文件都已經放進交叉編譯器默認的路徑里面呢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM