注:製作過程中最好不要用root賬號,並且最好安裝在/opt/目錄下
1,準備下載,安裝路徑
[shaocongshuai@localhost ~]$ sudo chmod 777 /opt/
[shaocongshuai@localhost ~]$ cd /opt/
[shaocongshuai@localhost opt]$ ls
rh
2,下載源碼包並準備編譯目錄結構
所有的發行版可以在以下官網下載 :
http://buildroot.net/downloads/
[shaocongshuai@localhost opt]$ wget http://buildroot.net/downloads/buildroot-2012.08.tar.bz2
[shaocongshuai@localhost opt]$ tar -xjvf buildroot-2012.08.tar.bz2
[shaocongshuai@localhost opt]$ sudo mv rh/ buildroot-2012.08/
[shaocongshuai@localhost opt]$ cd buildroot-2012.08/
[shaocongshuai@localhost buildroot-2012.08]$ ls
board boot CHANGES Config.in configs COPYING docs fs linux Makefile package rh support target toolchain
3,開始配置編譯安裝:
[shaocongshuai@localhost buildroot-2012.08]$ export TERM=vt100 //防止make menuconfig 是出現亂碼
[shaocongshuai@localhost buildroot-2012.08]$make menuconfig //進行builroot配置
當然在執行這個命令是會提示缺少一些命令這個時候,就用yum 來安裝,在來配置
buildroot-2012.08 make menuconfig 選項配置說明
=======================
Target Architecture (ARM (little endian)) --->
Target Architecture Variant (arm920t) ---> 根據自己的CPU來選擇
Target ABI (EABI) --->
Build options --->
($(TOPDIR)/rh) Download dir
($(TOPDIR)/arm920t) Host dir
[*] prefer static libraries
其它選項都不要選,如果是要設置值的地方就使用默認值
Toolchain --->
Kernel Headers (Linux 2.6 (manually specified version)) --->
(2.6.37) linux version 選定內核版本爲2.6.37
... ...
[*] Enable compiler tls support
[*] Enable MMU support
[*] Use software floating point by default
[*] Enable large file (files > 2 GB) support
[*] Enable IPv6 support
[*] Enable RPC support
[*] Enable WCHAR support
[*] Enable C++ support
其它選項都不要選,如果是要設置值的地方就使用默認值
System configuration --->
Init system (None) ---> 把Busbyox編譯去掉
這裏面所有的都不要選,如果是要設置值的地方就使用默認值
Package Selection for the target --->
這裏面所有的選項都不要選,除了:
Libraries --->
Compression and decompression --->
[*] lzo
-*- zlib
Host utilities --->
這裏面所有的選項都不要選
Filesystem images --->
這裏面所有的選項都不要選
Bootloaders --->
這裏面所有的選項都不要選
Kernel ---
這裏面所有的選項都不要選
4,配置完之後
shaocongshuai@localhost buildroot-2012.08]$ make
這個過程會報錯,提示安裝一些命令,然後我們就用yum安裝,在重新make
這個編譯過程得花一些時間
如果出現下面這些提示,則表明編譯成功
touch /opt/buildroot-2012.08/output/target/etc/ld.so.conf
mkdir -p /opt/buildroot-2012.08/output/target/var/cache/ldconfig
if [ -x "/opt/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig" ]; \
then \
/opt/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig -r /opt/buildroot-2012.08/output/target; \
else \
/sbin/ldconfig -r /opt/buildroot-2012.08/output/target; \
fi
/opt/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: skipping /usr/X11R6/lib: No such file or directory
( \
echo "NAME=Buildroot"; \
echo "VERSION=2012.08"; \
echo "ID=buildroot"; \
echo "VERSION_ID=2012.08"; \
echo "PRETTY_NAME=\"Buildroot 2012.08\"" \
) > /opt/buildroot-2012.08/output/target/etc/os-release
>>> Generating root filesystem image rootfs.tar
rm -f /opt/buildroot-2012.08/output/build/_fakeroot.fs
echo "chown -R 0:0 /opt/buildroot-2012.08/output/target" >> /opt/buildroot-2012.08/output/build/_fakeroot.fs
cat target/generic/device_table.txt target/generic/device_table_dev.txt > /opt/buildroot-2012.08/output/build/_device_table.txt
echo -e '\n \n' >> /opt/buildroot-2012.08/output/build/_device_table.txt
echo -e '\n \n' >> /opt/buildroot-2012.08/output/build/_device_table.txt
echo "/opt/buildroot-2012.08/arm920t/usr/bin/makedevs -d /opt/buildroot-2012.08/output/build/_device_table.txt /opt/buildroot-2012.08/output/target" >> /opt/buildroot-2012.08/output/build/_fakeroot.fs
echo " tar -c""f /opt/buildroot-2012.08/output/images/rootfs.tar -C /opt/buildroot-2012.08/output/target ." >> /opt/buildroot-2012.08/output/build/_fakeroot.fs
chmod a+x /opt/buildroot-2012.08/output/build/_fakeroot.fs
/opt/buildroot-2012.08/arm920t/usr/bin/fakeroot -- /opt/buildroot-2012.08/output/build/_fakeroot.fs
rootdir=/opt/buildroot-2012.08/output/target
table='/opt/buildroot-2012.08/output/build/_device_table.txt'
看一下各目錄下有沒有相應的內容
[shaocongshuai@localhost buildroot-2012.08]$ ls arm920t/usr/bin/
aclocal arm-linux-ldconfig arm-unknown-linux-uclibcgnueabi-g++ autoconf
aclocal-1.11 arm-linux-ldd arm-unknown-linux-uclibcgnueabi-gcc autoheader
arm-linux-addr2line arm-linux-nm arm-unknown-linux-uclibcgnueabi-gcc-4.5.4 autom4te
arm-linux-ar arm-linux-objcopy arm-unknown-linux-uclibcgnueabi-gccbug automake
arm-linux-as arm-linux-objdump arm-unknown-linux-uclibcgnueabi-gcov automake-1.11
arm-linux-c++ arm-linux-ranlib arm-unknown-linux-uclibcgnueabi-gprof autoreconf
arm-linux-cc arm-linux-readelf arm-unknown-linux-uclibcgnueabi-ld autoscan
arm-linux-c++filt arm-linux-size arm-unknown-linux-uclibcgnueabi-ld.bfd autoupdate
arm-linux-cpp arm-linux-strings arm-unknown-linux-uclibcgnueabi-ldconfig faked
arm-linux-elfedit arm-linux-strip arm-unknown-linux-uclibcgnueabi-ldd fakeroot
arm-linux-g++ arm-unknown-linux-uclibcgnueabi-addr2line arm-unknown-linux-uclibcgnueabi-nm ifnames
arm-linux-gcc arm-unknown-linux-uclibcgnueabi-ar arm-unknown-linux-uclibcgnueabi-objcopy ldconfig
arm-linux-gcc-4.5.4 arm-unknown-linux-uclibcgnueabi-as arm-unknown-linux-uclibcgnueabi-objdump ldd
arm-linux-gccbug arm-unknown-linux-uclibcgnueabi-c++ arm-unknown-linux-uclibcgnueabi-ranlib libtool
arm-linux-gcov arm-unknown-linux-uclibcgnueabi-cc arm-unknown-linux-uclibcgnueabi-readelf libtoolize
arm-linux-gprof arm-unknown-linux-uclibcgnueabi-c++filt arm-unknown-linux-uclibcgnueabi-size m4
arm-linux-ld arm-unknown-linux-uclibcgnueabi-cpp arm-unknown-linux-uclibcgnueabi-strings makedevs
arm-linux-ld.bfd arm-unknown-linux-uclibcgnueabi-elfedit arm-unknown-linux-uclibcgnueabi-strip
[shaocongshuai@localhost buildroot-2012.08]$ ls arm920t/usr/lib/
gcc libfakeroot-0.so libfakeroot.so libgmp.so libgmp.so.10.0.5 libltdl.so libltdl.so.7.2.2 libmpc.so libmpc.so.2.0.0 libmpfr.so libmpfr.so.4.1.1
ldscripts libfakeroot.la libgmp.la libgmp.so.10 libltdl.la libltdl.so.7 libmpc.la libmpc.so.2 libmpfr.la libmpfr.so.4
[shaocongshuai@localhost buildroot-2012.08]$ ls arm920t/usr/include/
gmp.h libltdl ltdl.h mpc.h mpf2mpfr.h mpfr.h
[shaocongshuai@localhost buildroot-2012.08]$ ls arm920t/usr/arm-unknown-linux-uclibcgnueabi/lib/
libgcc_s.so libgcc_s.so.1 libmudflap.a libmudflap.la libmudflapth.a libmudflapth.la libstdc++.a libstdc++.a-gdb.py libstdc++.la libsupc++.a libsupc++.la
[shaocongshuai@localhost buildroot-2012.08]$ ls arm920t/usr/arm-unknown-linux-uclibcgnueabi/sysroot/lib/
ld-uClibc-0.9.33.2.so libcrypt.so.0 libdl.so.0 libnsl-0.9.33.2.so libpthread.so.0 librt-0.9.33.2.so libutil-0.9.33.2.so
ld-uClibc.so.0 libc.so.0 libm-0.9.33.2.so libnsl.so.0 libresolv-0.9.33.2.so librt.so.0 libutil.so.0
libcrypt-0.9.33.2.so libdl-0.9.33.2.so libm.so.0 libpthread-0.9.33.2.so libresolv.so.0 libuClibc-0.9.33.2.so
[shaocongshuai@localhost buildroot-2012.08]$ ls arm920t/usr/arm-unknown-linux-uclibcgnueabi/sys-include/
gmp.h libltdl ltdl.h mpc.h mpf2mpfr.h mpfr.h
[shaocongshuai@localhost buildroot-2012.08]$ du -sh output/
1.9G output/
由於這個目錄很大,所以我們可以刪掉它
[shaocongshuai@localhost buildroot-2012.08]$ sudo rm -rf output/
rh目錄下的源碼包也可以刪去,減少空間
[shaocongshuai@localhost buildroot-2012.08]$ ls rh/
autoconf-2.68.tar.gz binutils-2.21.1.tar.bz2 gcc-4.5.4.tar.bz2 libtool-2.2.10.tar.gz lzo-2.06.tar.gz mpc-0.9.tar.gz uClibc-0.9.33.2.tar.bz2
automake-1.11.5.tar.gz fakeroot_1.18.2.orig.tar.bz2 gmp-5.0.5.tar.bz2 linux-2.6.37.tar.bz2 m4-1.4.16.tar.bz2 mpfr-3.1.1.tar.bz2 zlib-1.2.7.tar.bz2
[shaocongshuai@localhost buildroot-2012.08]$ sudo rm -rf rh/
這樣我們的編譯的工具目錄能保證是最小的
[shaocongshuai@localhost opt]$ du -sh buildroot-2012.08/
110M buildroot-2012.08/
附上: