使用buildroot製作交叉編譯工具

buildroot簡介

buildroot就是一個自動化生成工具,其可以輔助嵌入式開發人員生成boot、kernel、rootfs、cross compiler等。讓嵌入式開發變得更加的簡單,讓開發人員的精力集中在攻關方面,而不需要被交叉編譯器的製作或者根文件系統的製作,甚至於開發庫的移植方面所浪費不必要的時間。好的,說那麼多,咱們還是來看下buildroot吧。

buildroot的官網:https://buildroot.org/
buildroot的下載路徑:https://buildroot.org/downloads/

buildroot使用和配置

buildroot的配置方法和Linux內核的配置方法是一樣的,都是採用make menuconfig或者make xconfig的方式在配置,如下:

root@ubuntu:/work/a9_board/tiny4412/buildroot-2015.08#make menuconfig
這裏寫圖片描述

在配置菜單各個選項的功能/意義:

Target options : 目標(也就是製作出來的工具給什麼平臺使用)
Build options :配置(也就是buildroot一些配置項,比如下載的文件放在哪裏,編譯生成的文件放在哪裏等)
Toolchain:編譯器(可以配置生成交叉編譯器或者引用已有的交叉編譯),如果是配置生成交叉編譯器則按照Target options生成對應的編譯器。
System configuration:系統配置(其實就是是否配置製作根文件系統)
Kernel:存放Linux內核和Linux內核的配置
Target packages:目標包,簡單來說就是裏面可以配置生成根文件系統的busybox和其他的一些第三方庫,比如:是否支持qt、mplayer等。
其他的不在一一說明

製作交叉編譯器

製作交叉編譯器需要去配置目標,首先需要配置此編譯器在那個平臺使用,那麼咱們的目標是製作cortex-A9的交叉編譯器。

目標配置

這裏寫圖片描述

toolchain配置

這裏寫圖片描述

那麼接下來就可以進行編譯,在編譯的過程中,會下載配置上的源碼到dl目錄下,然後解壓到output/build/進行配置和編譯。
最終生成的文件存在在output目錄下,而output下有四個需要咱們去區分的目錄:

build目錄:所有源碼的編譯路徑
host目錄:存放交叉編譯器,如果指定是外部編譯器,會把外部編譯器拷貝到此處。buildroot編譯生成的也是存放在此。
images目錄:存放根文件系統的打包好的各個格式,比如:ext,yaffs等…..
target目錄:編譯出來的根文件系統存放的路徑(也就是待會生成根文件系統的路徑,用nfs掛載即可)

編譯生成的交叉編譯

root@ubuntu:/work/a9_board/tiny4412/buildroot-2015.08/output/host/usr/bin# ls

arm-buildroot-linux-uclibcgnueabi-ar arm-linux-g++ ldconfig
arm-buildroot-linux-uclibcgnueabi-as arm-linux-gcc ldd
arm-buildroot-linux-uclibcgnueabi-c++ arm-linux-gcc-4.9.3 libtool
arm-buildroot-linux-uclibcgnueabi-cc arm-linux-gcc-ar libtoolize
arm-buildroot-linux-uclibcgnueabi-c++filt arm-linux-gcc-nm lrelease
arm-buildroot-linux-uclibcgnueabi-cpp arm-linux-gcc-ranlib m4
arm-buildroot-linux-uclibcgnueabi-elfedit arm-linux-gcov makedevs
arm-buildroot-linux-uclibcgnueabi-g++ arm-linux-gdb mkpasswd
arm-buildroot-linux-uclibcgnueabi-gcc arm-linux-gprof moc
arm-buildroot-linux-uclibcgnueabi-gcc-4.9.3 arm-linux-ld ncurses5-config
arm-buildroot-linux-uclibcgnueabi-gcc-ar arm-linux-ld.bfd pkgconf
arm-buildroot-linux-uclibcgnueabi-gcc-nm arm-linux-ldconfig pkg-config
arm-buildroot-linux-uclibcgnueabi-gcc-ranlib arm-linux-ldd pydoc
arm-buildroot-linux-uclibcgnueabi-gcov arm-linux-nm python
arm-buildroot-linux-uclibcgnueabi-gdb arm-linux-objcopy python2
arm-buildroot-linux-uclibcgnueabi-gprof arm-linux-objdump python2.7
arm-buildroot-linux-uclibcgnueabi-ld arm-linux-ranlib python2.7-config
arm-buildroot-linux-uclibcgnueabi-ld.bfd arm-linux-readelf python2-config
arm-buildroot-linux-uclibcgnueabi-ldconfig arm-linux-size python-config
arm-buildroot-linux-uclibcgnueabi-ldd arm-linux-strings qmake
arm-buildroot-linux-uclibcgnueabi-nm arm-linux-strip qt.conf
arm-buildroot-linux-uclibcgnueabi-objcopy autoconf rcc
arm-buildroot-linux-uclibcgnueabi-objdump autoheader reset
arm-buildroot-linux-uclibcgnueabi-ranlib autom4te smtpd.py
arm-buildroot-linux-uclibcgnueabi-readelf automake tabs
arm-buildroot-linux-uclibcgnueabi-size automake-1.15 tic
arm-buildroot-linux-uclibcgnueabi-strings autoreconf toe
arm-buildroot-linux-uclibcgnueabi-strip autoscan tput
arm-linux-addr2line autoupdate tset
arm-linux-ar captoinfo uic
arm-linux-as clear xmlwf
arm-linux-c++ faked

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章