构建根文件系统之前,先来编译一下busybox。
查看readme,看一下有没有讲怎么编译,里面有一些关于busybox的介绍,比如什么是busybox。
怎么使用busybox。
没有看到讲解怎么编译的,查看一下install文件,可以看到,编译busybox的方法和编译Linux kernel相似,也是先配置然后make编译,需要注意的是,直接执行make install,默认是会安装到PC机上的,我们需要额外指定一下安装的地址。
也就是执行#后面的那个make CONFIG_PREFIX=/path/from/root install,安装到我们指定的地方。
在busybox目录下执行make menuconfig,先执行一下配置。
我们要编译给嵌入式系统使用的,那么先来配置一下交叉编译的编译器,在busybox的配置项里面没有找到交叉编译的设置,那我们再来看一下Makefile。
一般来说,交叉编译的变量开头都是CROSS,搜索CROSS,可以找到一个CROSS_COMPILE变量。
没有找到配置CROSS_COMPILE的选项,这里我们就直接配置了,或者也可以执行make CROSS_COMPILE=arm-linux-,两个方法都是一样的,将CROSS_COMPILE配置为arm-linux-。
然后有一个tab补全的功能,busybox默认是没有的,我们需要设置一下,这样以后操作busybox会更方便一些,这个功能的路径如下:
Busybox Settings
Busybox Library Tuning
Tab completion
然后,我们使用的C库来源有两种,一种是glibc,一种是uclibc,用glibc时,如果是静态链接就会有警告信息。
make menuconfig中将这一项配置为空,表示不选。
配置完成后就可以编译了,注意要使用install文件里面的make选项,注意把地址换成自己想要下载的地方去。
创建一个046文件夹,用来存放busybox install后的文件。
在busybox目录下执行如下指令即可。
make CONFIG_PREFIX=/home/book/Desktop/test/046_first_fs/ install
到046文件夹下查看一下,发现已经有了bin目录等。
可以看到,它们都是到busybox的链接。
查看linuxrc,发现它也是到busybox的链接。
至此,busybox成功编译完成。