Buildroot的執(zhí)行流程
- 下載源代碼文件
- 配置,編譯和安裝交叉編譯器,或者導(dǎo)入第三方的交叉編譯器
- 編譯和安裝所選擇的源碼包
- 編譯內(nèi)核
- 編譯bootloader
- 編譯根文件系統(tǒng)并打包成相應(yīng)鏡像。
如何重新編譯軟件包
經(jīng)過(guò)第一次完整編譯后,如果我們需要對(duì)源碼包重新配置,我們不能直接在buildroot上的根目錄下直接make,buildroot是不知道你已經(jīng)對(duì)源碼進(jìn)行重新配置,它只會(huì)將第一次編譯出來(lái)的文件,再次打包成根文件系統(tǒng)鏡像文件。不過(guò),我們可以通過(guò)以下兩個(gè)方法修改源碼的配置。
1. 直接刪除源碼包,例如我們要重新編譯openssh,那么可以直接刪除output/build/openssh-vesion 文件夾,那么當(dāng)你make的時(shí)候,他就會(huì)自動(dòng)從dl文件夾下,解壓縮源碼包,并重新安裝
2. 也是以openssh為例子,如果我們不想重新編譯,只想重新配置,也就是./configure,
- 我們可以直接刪除 output/build/openssh-version 目錄下的 .stamp_configured
- 如果你只是想重新安裝可以刪除.stamp_target_install
- 重新make可以刪除.stamp_built
如何buildroot外面使用buildroot的交叉編譯器
交叉編譯器的路徑在Output/host目錄下,你可以使用arm-linux-gcc ,arch-linux-objdump等等,雖然看上去非常美好的,但筆者時(shí)候的時(shí)候卻是非常難受,因?yàn)楫?dāng)移植一個(gè)軟件的時(shí)候,你需要編譯的東西,可能不僅僅是一個(gè)源碼包,這個(gè)軟件可能需要到另外一個(gè)源碼包的庫(kù),而這個(gè)源碼包更可能需要其他的庫(kù),結(jié)果到最后,編譯的包各種多,如果你對(duì)庫(kù)依賴熟悉還好,不熟悉的情況,實(shí)在讓人頭痛,這種方法,筆者不太推薦,buildroot的優(yōu)勢(shì)有點(diǎn)類似在CentOS下的YUM,大部分的包,他都能夠識(shí)別依賴,你需要的庫(kù),只要選上,基本編譯就不成問(wèn)題了,如果實(shí)在不行,你稍微制定路徑就可以,路徑一般在/output/host/usr/ARCH-unknown-linux-gnu/sysroot/usr下,這個(gè)目錄相當(dāng)于交叉編譯的編譯環(huán)境,他提供了很多庫(kù)依賴,減輕了很多移植工作,buildroot的強(qiáng)大之處。
|