本文档主要涉及两个难点:1.Busybox的编译;2.yaffs2文件系统的制作(因为有制作好的cpio压缩包所以文件树结构不大清楚)
一.Busybox的制作
有四种编译配置.config文件的方法(.config文件是这种命令行编程通常配置什么功能编写,什么功能放弃的一个文件,直接修改也可以)
make allyesconfig(编译最多的功能),make deconfig(编译默认功能),make allnoconfig(编译最少的功能)以及make menuconfig(通过一个图形化界面进行编译)
我是make deconfig生成一个默认.config之后再用make menuconfig进行功能增加,因为默认的编译不包含flash_eraseall flash_cp等flash操作命令的。
如果你有需要增加编译的功能又不知道它在哪儿配置,你可以在make menuconfig弹出窗口后输入“/”号,然后切换进关键字查找界面,它会根据你输入的关键字弹出响应选项信息,你在根据选项信息中描述的选项位置定位到那个配置,输入"y"就可以了,如果取消功能输入"n"。
配置好.config文件,一般而言嵌入式还有三个操作需要做,一个是选择静态编译,一个是输入交叉编译器的位置,一个是选择编译出来的可执行文件放置的位置(这个可以用默认的_install),为了方便查找下面放一下make menuconfig后这几个选项的位置图片。
1.选择静态编译
静态编译可以规避放置各种动态库的麻烦,同时也有个弊端,静态编译一般比动态编译生成大
这个选项括号里面有[*]表示已经选择,如果里面是空的,就按"y"就选择了。
2.输入交叉编译器的位置:Setting->Cross compiler prefix
找到这个位置点回车进入输入页面输入交叉编译器的位置就可以了
回车后的界面为
3.配置输出路径
这个我是默认弄的,这个的位置填写你的文件系统根目录,如果有问题那就是我本人没有实验理解错了,你可以直接就用它的默认地址_install然后,在make以及make install之后把./_install/bin路径下的busybox可执行文件拷出来放进你文件系统中的bin路径下替换原有的busybox,如果你本身文件系统没有busybox那如果需要直接使用常用的Linux命令而不是用一个前置busybox+命令的格式,你就需要把make install生成的动态链接文件一起拷进相关文件路径,如果你想手动复制,一共有下面几个位置需要替换
1)"你的busybox源码根目录/_install/bin下的所有文件"复制到"你的文件系统根目录/bin"(引号内的路径为文字描述,根据实际情况自己找自己的位置)
2)"你的busybox源码根目录/_install/sbin下的所有文件"复制到"你的文件系统根目录/sbin"
3)"你的busybox源码根目录/_install/usr/bin下的所有文件"复制到"你的文件系统根目录/usr/bin"
4)"你的busybox源码根目录/_install/usr/sbin下的所有文件"复制到"你的文件系统根目录/usr/sbin"
我理解的这个文件系统路径配置就能直接帮你进行拷贝操作。
以上配置完成了,就有个有效的.config文件了,然后执行make操作及make install操作
如果有的出现莫名其妙的报错,请用管理员权限执行命令,即命令前增加sudo
二.yaffs2文件系统的制作
我手里有制作好的cpio压缩包,只需要用解压命令cpio -idmv < filename.cpio就可以获得完整的文件系统了,如果有yaffs2文件,只是需要更新busybox,那使用unyaffs2 xxx.img就可以了,制作yaffs2命令为mkyaffs2image xxx xxx.img(xxx是你的文件系统根目录路径,xxx.img是你yaffs2镜像的名字)
这里面的难点是不好搞这两个工具,我上传了它们俩的资源包,只要5积分,如果你没有积分,求助万能的某宝吧,如果mkyaffs2image使用有问题,我之前遇到过,解决办法是下载一个32位支持库,因为我的虚拟机联网不好配置,我用了个迂回的办法就是用主机下载安装包,时间问题可能那个支持库叫libc6-dbg_2.23-0ubuntu11.3_amd64.deb,或者我记错了。