注:制作过程中最好不要用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/
附上: