海思配置 Busybox

本文详细介绍了在Ubuntu环境下使用交叉编译器编译BusyBox的过程,包括解决编译过程中遇到的mtd/mtd-user.h文件缺失、structmtd_info_user成员未定义等问题,以及最终构建最小根文件系统并完善其功能的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件平台:XC2440

主机系统:ubuntu9.10

交叉编译器:4.1.2

 

编译这个busybox主要是为了巩固并记录一下编译器过程,当然主要是记录一些问题。

首先下载并解压源码,按照官方的分为三步

make menuconfig 进行配置以生成.config

make            编译

make install    安装,需要指定安装位置,也可以在第一步的配置中指定。

 

如果真有那么顺利就好了。我配置好后执行make的时候提示有好几个错误,第一个就是mtd/mtd-user.h文件找不到。

解决办法:cp /usr/include/mtd/ include/mtd/ -a

 

然后重新编译,又说struct mtd_info_user中没有定义成员writesize,找到struct mtd_info_user结构体,在后面加入一个成员uint32_t writesize;这个问题解决掉。

 

再编译,双出现一个问题。提示rfkill的一堆错误,这个估计也没什么用,直接make menuconfig取消掉这个,再编译,等一下就是下面的输出,那么编译就完成了

 

这是最终编译完成

Trying libraries: crypt m

 Library crypt is not needed, excluding it

 Library m is needed, can't exclude it (yet)

Final link with: m

libbusybox: 0_lib/libbusybox.so.1.20.0

busybox linked against libbusybox: 0_lib/busybox

Linking individual applets against libbusybox (see 0_lib/*)

  DOC     busybox.pod

  DOC     BusyBox.txt

  DOC     busybox.1

  DOC     BusyBox.html

注意CROSS_COMPILE可以在Makefile中指定,也可以在make menuconfig配置的时候指定路径 ,安装路径也是。

 

make CONFIG_PREFIX=/指定路径  install 就可以安装了。

安装完后输出

--------------------------------------------------

You will probably need to make your busybox binary

setuid root to ensure all configured applets will

work properly.

--------------------------------------------------

进入安装目录会发现bin  linuxrc  sbin  usr这几个文件

 

进入安装目录,创建dev目录并手动创建两个设备节点。

mkdir dev

sudo mknod dev/console c 5 1

sudo mknod dev/null    c 1 3

 

mkdir etc

vi etc/inittab输入

console::askfirst:-/bin/sh

保存退出

 

创建lib目录,并将交叉编译工具中的库文件拷过来,保持动态链接,加-d

cp 交叉工具路径/lib/*.so*/  安装路径下面的lib   -d

至此最小根文件系统已建立 可以用mkyaffs2image工具进行制作yaffs2文件系统

 

进行完善

mkdir proc

mkdir etc/init.d

vi etc/init.d/rcS

mount -t proc /proc

chmod +x etc/init.d/rcS

还可以用mount -a的方法,它会去读/etc/fstab

vi etc/fstab

proc    /proc    proc   defaults   0   0

保存退出。

还有其他要完善的功能,网上很多就不说了。

 

由于我是用网络文件系统,所以我配置busybox的时候没怎么裁剪,能选的基本上全选择了。最终生成的yaffs2文件系统有30多兆。

现在通过NFS起根文件系统,调试程序也方便很多。

 

其实刚在使用时发现卸载*.ko的模块时会出问题。说是找不到相关的命令,解决办法:在文件系统的lib目录下添加空目录modules/2.6.37.4,其中后面的那个LINUX版本号根据你自己编译的时候用的哪个就写哪个。

2、配置 busybox

A、进入 busybox 所在目录,进行配置操作需要输入如下命令:

cd osdrv/opensource/busybox/busybox-1.20.2

cp config_v300_soft .config

C、进入Makefile 修改

vi Makefile

164 CROSS_COMPILE ?= arm-hisiv300-linux-
190 ARCH ?= arm 

mkdir etc dev lib tmp var mnt home proc

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值