busybox是很好编译的,有跟编译内核差不多的menuconfig,而且其中选项比kernel简洁得多了。
我是在Linux下编译的,具体的过程如下:
1、准备
ARM的交叉编译工具,我这里使用的是 gcc-4.1.2-glibc-2.5-nptl-3
Busybox的源代码
下载地址:http://www.busybox.net/
2、编译busybox
在busybox目录下执行
make menuconfig
进入图形选择模式,这里有几个选项是必选或者必填的
Busybox Settings -> Build Options ->
[*] Build BusyBox as a static binary (no shared libs)
//这个是静态编译的选项,这样编译出来的可执行文件才不依赖系统的动态链接库
(/home/cpp/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-) Cross Compiler prefex
//这是交叉编译器的”路径+前缀”,这里要根据实际安装位置填,这是在我的机器上安装位置
// ( ) Additional CFLAGS 注意!这个不选!!!! 不要多此一举的选择并在里面填写头文件的路径
Busybox Settings -> Installation Options->
[*] Don’t use /usr
//这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上!!
接下来退出menuconfig模式后运行make编译
在编译完成是我看到这样的log:
————————————————————————————————————————————————
Trying libraries: crypt m
Library crypt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Final link with: m
————————————————————————————————————————————————
开始还以为出了什么问题呢,没看懂这个log的意思。但是至少发现busybox已经生成了。。。。。如果有人知道这个含义请给我回复下,谢谢
完成后会在当前目录生成busybox的可执行文件,用你的adb push 把它搞到目标板上即可
顺便附上几个关于busybox的网站
http://www.busybox.net/
http://www.busybox.net/downloads/BusyBox.html
http://www.ibm.com/developerworks/cn/linux/l-busybox/#resources
http://www.ibm.com/developerworks/cn/linux/l-busybox/#