uboot的編譯可分為三個(gè)步驟:安裝必要工具、配置、編譯
一、安裝必要工具
在進(jìn)行開(kāi)發(fā)之前,還需要一些其他的必要庫(kù),我們使用以下命令逐一安裝:
elf@ubuntu:~$ sudo apt-get install build-essential
elf@ubuntu:~$ sudo apt-get install libncurses* elf@ubuntu:~$ sudo apt-get install lzop elf@ubuntu:~$ sudo apt-get install net-tools |
二、uboot配置
uboot配置是針對(duì)不同的功能來(lái)選擇不同的配置項(xiàng)。uboot功能有很多,我們?cè)陂_(kāi)發(fā)過(guò)程中可能需要根據(jù)板卡的不同、平臺(tái)的不同或者項(xiàng)目需求差異對(duì)uboot功能支持進(jìn)行調(diào)整,所以就可以通過(guò)uboot配置對(duì)uboot系統(tǒng)進(jìn)行功能增加或裁剪。這些功能配置項(xiàng)存儲(chǔ)在configs/目錄下的配置文件(config_file)中,其中不同的配置文件中存儲(chǔ)著不同的功能配置組合,對(duì)應(yīng)不同的板卡、平臺(tái)或項(xiàng)目工程。我們使用make <config_file>命令,就可根據(jù)config_file配置項(xiàng)在根目錄下生成或者更新.config文件,在編譯時(shí),編譯器根據(jù)編譯規(guī)則按照.config中的配置進(jìn)行編譯,具體uboot怎么配置,我們?cè)谙旅嬲鹿?jié)有講解,本章節(jié)主要演示編譯流程,ELF?1開(kāi)發(fā)板的配置文件為imx6ull_elf1_defconfig。
三、編譯
如果曾經(jīng)編譯過(guò),在編譯之前可以使用make clean命令清除一下中間文件,也可以使用make distclean進(jìn)行清除,make clean清除上次的make命令所產(chǎn)生的object文件(后綴為“.o”的文件)及可執(zhí)行文件,而make distclean會(huì)清除上次編譯生成的所有文件,包括uboot的配置文件.config,所以如果使用make distclean進(jìn)行清除,就需要在重新編譯之前,再次執(zhí)行make imx6ull_elf1_emmc_defconfig生成.config。
這里我們第一次編譯,執(zhí)行如下命令生成配置文件.config:
elf@ubuntu:~/work/uboot-imx-2016.03-elf1$?make imx6ull_elf1_emmc_defconfig |
直接使用make命令編譯即可:
. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
elf@ubuntu:~/work/uboot-imx-2016.03-elf1$?make -j4 |
其中-j4表示使用4個(gè)處理器核心(我們安裝虛擬機(jī)時(shí),配置的處理器核心數(shù)就是4,所以這里最大也只能用4個(gè)核心)進(jìn)行編譯,這樣編譯會(huì)快一些。
編譯完成之后在uboot根目錄生成u-boot.imx文件,即是我們最終要燒寫(xiě)的uboot鏡像文件。
編譯步驟很簡(jiǎn)單,我們還可以進(jìn)一步簡(jiǎn)化編譯操作,就是將這些編譯步驟放到一個(gè)shell腳本中,直接執(zhí)行腳本進(jìn)行編譯。我們直接使用建立好的build.sh進(jìn)行編譯即可。編譯之前,我們看一下腳本內(nèi)容:
其中第2行:CPU是一個(gè)變量,通過(guò)export CPU='grep -c processor /proc/cpuinfo'
獲取到當(dāng)前機(jī)器的處理器核心數(shù)量賦值給變量CPU,在最后第6行make -j${CPUS}編譯時(shí)引用此變量。
第3行:是配置交叉編譯環(huán)境,但是注意,在腳本中配置的交叉編譯環(huán)境只能作用于此腳本運(yùn)行期間。而在我們的終端界面命令行配置的交叉編譯環(huán)境則會(huì)一直作用在整個(gè)終端工作周期內(nèi),只要不關(guān)閉終端界面或者更換用戶(hù)此環(huán)境就有效。
第5行:配置開(kāi)發(fā)板。
第6行:開(kāi)始編譯。
執(zhí)行腳本進(jìn)行編譯:
elf@ubuntu:~/work/uboot-imx-2016.03-elf1$?./build.sh |