Chinaunix首页 | 论坛 | 博客
  • 博客访问: 574093
  • 博文数量: 75
  • 博客积分: 988
  • 博客等级: 准尉
  • 技术积分: 1269
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-10 15:44
文章分类

全部博文(75)

文章存档

2022年(1)

2019年(1)

2018年(1)

2016年(9)

2015年(7)

2013年(6)

2012年(40)

2011年(10)

分类: LINUX

2012-05-23 10:56:48

硬件平台: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版本号根据你自己编译的时候用的哪个就写哪个。










阅读(9389) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~