toolchain設定
進入Toolchain選項:
Toolchain —>
Toolchain type (External toolchain) —> (設定采用自己定義的交叉編譯工具)
Toolchain (Custom toolchain) —>
Toolchain origin (Pre-installed toolchain) —>(預先安裝了交叉編譯工具)
(/opt/FriendlyARM/toolchain/4.9.3/) Toolchain path (設定自定義交叉編譯工具的路徑)
($(ARCH)-linux) Toolchain prefix (設定toolchain的字首)
External toolchain gcc version (4.9.x) —>(設定toolchain的版本)
External toolchain kernel headers series (3.10.x) —> (最好選用與平台所用的linux版本一緻的headers,具體還要看交叉編譯工具是否支援)
External toolchain C library (glibc/eglibc) —> (選擇自定義交叉編譯工具所用的C庫)
[* ] Toolchain has SSP support? (根據報錯選上的)
[* ] Toolchain has RPC support? (根據報錯選上的)
[*] Toolchain has C++ support? (支援C++)
我的toolchain版本是4.9.3,Linux header可以自行檢視:就在version.h裡,199261是十進制,換成十六進制即可發現是3.10版本

Target options設定
Target options —>
Target Architecture (ARM (little endian)) —>(小端模式)
Target Binary Format (ELF) —>(二進制格式是ELF)
Target Architecture Variant (cortex-A7) —>(我的闆子CPU是a7)
Target ABI (EABIhf) —> (支援EABIhf)
Floating point strategy (VFPv4-D16) —> (浮點處理采用VFP-v4)
ARM instruction set (Thumb2) —> (采用精簡指令集Thumb2)
這部分是按自己的闆子來設定的:
System configuration設定
System configuration —>
(buildroot) System hostname (設定主機名)
(Welcome to Buildroot) System banner (輸入歡迎語)
Init system (BusyBox) —>
/dev management (Dynamic using devtmpfs + mdev) —>(使用mdev動态加載裝置節點的方式,devtmpfs是Linux核心中的一個虛拟檔案系統,需要啟用核心配置選項: CONFIG_DEVTMPFS和CONFIG_DEVTMPFS_MOUNT)
() Root password(進入linux控制台終端後的密碼)
[*] remount root filesystem read-write during boot(可以進行動态的挂載)
Run a getty (login prompt) after boot —>
(console) TTY port(設定成序列槽登陸的裝置節點)
Baudrate (115200) —> (設定波特率)
Filesystem images設定
Filesystem images —>
[*] ext2/3/4 root filesystem
ext2/3/4 variant (ext4) —>
[*] tar the root filesystem
Compression method (no compression) —>
kernel相關設定
Kernel—>
[] Linux Kernel 不選不編譯
Target packages設定
Target packages —> : 按自己需求增加或裁剪Target packages,裡面包含了一大堆第三方的開源工具和庫,包括常用的busybox的選用、音頻、網絡等。一切都是按自己需求來配置。
在許多程式中,BusyBox具有基本init程式的實作,這對于大多數嵌入式系統來說已經足夠了。啟用BR2_INIT_BUSYBOX将確定BusyBox将建構和安裝其init程式。這是Buildroot中的預設解決方案。BusyBox init程式将/etc/inittab在啟動時讀取檔案以了解如何操作。
配置完所有内容後,配置工具将生成.config包含整個配置的 檔案。該檔案将由頂級Makefile讀取。
要開始建構過程,隻需運作:
make
編譯過程中要聯網,因為可能需要下載下傳一些packages。
編譯後生成的檔案夾格式的rootfs在buildroot/output/images/rootfs.tar。先建立一個檔案夾作為根檔案目錄,我們将rootfs.tar解壓到這個檔案内,得到的就是一個完整的可以工作的檔案夾形式的rootfs了
你永遠不應該使用make -jN與Buildroot裡面:目前不支援頂級并行make。相反,使用該BR2_JLEVEL選項告訴Buildroot運作每個包的編譯make -jN。
Buildroot輸出存儲在一個目錄中output/。該目錄包含幾個子目錄:
images/其中存儲了所有images(核心 image,引導加載程式和根檔案系統 image)。這些是您需要放在目标系統上的檔案。
ibuild//建構所有元件的位置(包括主機上Buildroot所需的工具和為目标編譯的包)。該目錄包含每個元件的一個子目錄。
staging/其中包含類似于根檔案系統層次結構的層次結構。此目錄包含交叉編譯工具鍊的标頭和庫以及為目标選擇的所有使用者空間包。但是,此目錄不是目标的根檔案系統:它包含許多開發檔案,未被剝離的二進制檔案和庫,這使得它對于嵌入式系統來說太大了。這些開發檔案用于編譯依賴于其他庫的目标庫和應用程式。
target/它幾乎包含了目标的完整根檔案系統:除了/ dev /中的裝置檔案外,所有需要的東西都存在(Buildroot無法建立它們,因為Buildroot不以root身份運作,也不想以root身份運作)。此外,它沒有正确的權限(例如busybox二進制檔案的setuid)。是以,不應在目标上使用此目錄 。相反,您應該使用images/目錄中内置的一個圖像。如果需要提取的根檔案系統映像以通過NFS引導,則使用生成的tarball映像images/并以root身份提取它。相比staging/,target/ 僅包含運作所選目标應用程式所需的檔案和庫:開發檔案(标題等)不存在,二進制檔案被剝離。
host/ 包含為正确執行Buildroot所需的為主機編譯的工具的安裝,包括交叉編譯工具鍊。
其中每次開機都要登入,太麻煩了,我們修改根檔案系統:
vi etc/inittab
将
console::respawn:/sbin/getty -L console 115200 vt100 # GENERIC_SERIAL
這一行注釋掉,替換成:
console::respawn:-/bin/sh