busybox编译详细流程
1、建立目标板空根目录文件夹及根目录下的文件夹
mkdir root
解压源码包
#tar jxvfbusybox-1.6.1.tar.bz2
#cdbusybox-1.6.1 2、定制busybox
进入到压缩文件存放的目录下,并解压。然后进入解压后的busybox目录
文件夹,随
后配置busybox。
make menuconfig
执行之后,将出现配置界面:
每个版本的配置选项组织有所不同。不管怎样,我们注意以下选项就行了:
1)Support for devf 2)Build BusyBox as astatic binary(no shared libs)//将busybox编译成静态链接
3)Do you want to build busybox with aCross Compile?
(/usr/local/arm/3.3.2/bin/arm-linux-)Cross Compile prefix//指定交叉编译器
4)init 5)Support reading an inittab file//支持init读取
/etc/inittab配置文件
6)(X)ash选中ash//建立的rcS脚本才能执行
7)ash 8)cp cat ls mkdir mv//可执行命令工具的选择,自己看着办吧,需要用到的就选上
9)mount 10)umount 11)Support loopback mounts 12)Support for the old/etc/mtab file 13)insmod 14)Support version 2.2.x to 2.4.x Linux kernels 15)Support version 2.6.x Linux kernels 16)vi
以上内容必须选上,其他可按默认值;如果要支持其他功能,如网络支持等,可按需选择,英语不是很烂的话,这些都没有问题。
配置好之后,保存退出。然后对其编译和安装到刚才建立的根文件系统目录下:
make TARGET_ARCH=arm CROSS=arm-linux-
可能出现的编译出错情况:
若出现错误
1.
#if ENABLE_STATIC&&defined(__GLIBC__)&&!defined(__UCLIBC__)
#warning Static linking against glibc produces buggy executables
#warning(glibc does not cope well with ld--gc-sections).
#warning dhat/bugzilla/i?id=3400
#warning Note that glibc is unsuitable for static linking anyway.
#warning If you still want to do it,remove-Wl,--gc-sections
#warning from top-level Makefile and remove this warning.
#error Aborting compilation.
#endif
将applets/applets.c文件的开头的条件编译去掉
2.
libbb/time.c:20:error:"CLOCK_MONOTONIC"undeclared(first use in this function)
[*************************.3]#makemenuconfig
去掉Busybox Settings--shell程序的编写流程
Busybox Library Tuning---
Use clock_gettie(CLOCK_MONOTONIC)syscall 3.
miscutils/taskset.c:17:error:parse error before'*'token miscutils/taskset.c:18:warning:function declaration isn't aprototype miscutils/taskset.c:In function`__from_cpuset':
miscutils/taskset.c:22:error:`CPU_SETSIZE'undeclared(first use in this function)
miscutils/taskset.c:22:error:(Each undeclared identifier is reported only once miscutils/taskset.c:22:error:for each function it appears in.)
miscutils/taskset.c:26:warning:implicit declaration of
function`CPU_ISSET'
miscu tils/taskset.c:26:error:`mask'undeclared(first use in this function)
miscutils/taskset.c:In function`taskset_main':
miscutils/taskset.c:47:error:`cpu_set_t'undeclared(first use in this function)
miscutils/taskset.c:47:error:parse error before"mask"
miscutils/taskset.c:68:warning:implicit declaration of
function`CPU_ZERO'
miscutils/taskset.c:68:error:`new_mask'undeclared(first use in this function)
miscutils/taskset.c:69:error:`CPU_SETSIZE'undeclared(first use in this function)
miscutils/taskset.c:71:warning:implicit declaration of
function`CPU_SET'
miscutils/taskset.c:78:error:`mask'undeclared(first use in
this function)
make[1]:*[miscutils/taskset.o]Error 1
make:*[miscutils]Error 2
[*************************.3]#makemenuconfig
去掉Miscellaneous Utilities---
[]task set 4.
Linux Module Utilities---
Support version 2.2.x to 2.4.x Linux kernels要去掉
如果不去掉的话,出错信息:
modutils/lib.a(insmod.o)(.text.insmod_main+0x360):In func tion`insmod_main'':
:undefined reference to`query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x394):In function`insmod_main'':
:undefined reference to`query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x440):In function`insmod_main'':
:undefined reference to`query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x494):In function`insmod_main'':
:undefined reference to`query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x570):In function`insmod_main'':
undefined reference to`query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0xc10):In function`insmod_main'':
:undefined reference to`create_module''
collect2:ld returned 1exit status
编译通过,busybox被生成了,然后执行
编译完成后,输入
make install PREFIX=/home/lincai/root进行BusyBox的安装.