Buildroot大大簡化了交叉編譯工具鏈的制作,,并且能為目標平臺產生完整的根文件系統(tǒng),,還可以制作在目標平臺上運行的本機編譯(Native Compile)工具鏈,。
我花了大量的時間研究buildroot,,基于2009.11的版本做了不少修改,,使得它符合固件開發(fā)的要求。下面列出的是一些主要的改動:
安裝編譯所需軟件包:
$ sudo apt-get install build-essential libncurses5-dev bison flex texinfo zlib1g-dev gettext libssl-dev autoconf buildroot用wget下載軟件包源碼,,因此需要安裝wget: $ sudo apt-get install wget Ubuntu默認的shell是dash,它跟buildroot的腳本有些不兼容,。用下面的命令切換到bash: $ sudo dpkg-reconfigure dash 2. 下載buildroot-2009.11,,放在HOME目錄下,當然也可以放在其它目錄,。 $ cd
$ wget http:///downloads/buildroot-2009.11.tar.bz2 $ tar jxf buildroot-2009.11.tar.bz2 3. 打補丁,。我把我的所有修改都放在一個補丁里:buildroot-2009.11.patch.zip $ cd buildroot-2009.11
$ patch -p1 < ../buildroot-2009.11.patch 4. 配置buildroot。buildroot采用了和Linux內核一樣的配置工具,,使用非常方便,。建議第一次編譯時只選擇生成工具鏈,暫時不要選擇額外的軟件包,。我的補丁已經設置好了適合于固件開發(fā)默認配置,,因此你做配置時可以全部接受默認值。(C++默認是關閉的,,如果需要可以打開) $ make menuconfig
屏幕截圖 - make menuconfig: 退出配置時會生成一個“.config”文件,。 5. 編譯buildroot。這可能會花幾個小時,,取決于你的Internet帶寬以及CPU性能 $ make
編譯好的工具鏈默認放在output/staging目錄下,,你可以在配置buildroot是指定到其它目錄。我喜歡把它設為/opt/cross/gcc442-uc0928,,表示gcc版本是4.4.2,,uClibc版本是0.9.28。注意:指定的目錄你一定要有寫權限,。如何設置:make menuconfig --> Build Options --> Toolchain and header file location 屏幕截圖 - 設置工具鏈位置: 如果成功編譯了工具鏈,,接下來可以重新用make menuconfig選擇所需軟件包,比如我一般會選擇nfs-utils, portmap, wireless-tool, wpa-supplicant,ipkg等等,。選好軟件包再次執(zhí)行make,。編譯好的軟件包會放在output/target目錄下,這個目錄擁有根文件系統(tǒng)的目錄結構,。 如果想要制作在目標平臺運行的本機編譯(Native Compile)工具鏈,,則在make menuconfig時打開下面兩個選項: 1. Build options子菜單下的development files in target filesystem 屏幕截圖 - development files in target filesystem: 2. Package Selection for the target子菜單下的native toolchain in the target filesystem 屏幕截圖 - native toolchain in the target filesystem 當然,為了能在目標平臺上進行本機編譯,,還需要在配置時選擇一些必要的編譯工具以及程序庫,,如: make, autoconf, automake, bison, m4, flex, libz, libiconv 等等。 注:所謂本機編譯(Native Compile),是相對于交叉編譯而言的,。其實這是最常見的編譯方式,,即在本機編譯程序用于在本機或與本機兼容的硬件平臺上運行。 補充: 1. autoconf, automake等軟件包依賴于microperl軟件包,。在編譯microperl時可能會遇到找不到m4的錯誤,這時只須執(zhí)行make host-m4即可產生buildroot_dir/output/host/usr/bin/m4,,然后再執(zhí)行make,,中斷的編譯將繼續(xù)進行。 2. 編譯某些軟件包需要pkg-config for host(在編譯平臺上運行而非在目標平臺上運行),,執(zhí)行make host-pkgconfig可編譯產生buildroot_dir/output/host/usr/bin/pkg-config |
|
來自: dwlinux_gs > 《Buildroot》