宿主机:Ubuntu14.04(32bit)
开发板:Mini2440
BusyBox:1.24.2
到BusyBox官网下源码并解压,然后可使用默认配置,也可以使用菜单配置。
进入BusyBox源码顶级目录执行下面的命令进行默认配置:
make defconfig
BusyBoxy各目录都有一个Config.in文件,里面保存了BusyBox的配置信息,我们可以手动修改Config.in以达到配置的目的,但是这样子比较麻烦。所幸的是,BusyBox提供了一个菜单式的配置工具,执行如下命令即可调出此工具:
make menuconfig
配置界面如下图:
第一次执行make menucofig时,可能会出错:
根据上图红色圈住部分的提示可知,当前系统缺乏curses.h头文件,执行下面命令安装curves即可:
sudo apt-get install libncurses-dev
Busybox Settings --->
Build Options --->
(1)静态编译
通过空格键使能Build BusyBox as a static binary(no shared libs)(对应的方括号处显示星号*即为使能状态)。
(2)交叉工具链前缀
设置Cross Compiler prefix如下所示(具体路径和交叉工具链前缀根据实际情况修改):
若将交叉编译工具链的路径(home/liyihaiMini2440/Toolschain/4.4.3/bin)添加到Ubuntu的PATH环境变量中,则在上图中只要指定arm-linux-即可,若当前系统中没有相应的交叉工具链或者输入有误,在保存退出时会提示错误:
2.2.2 安装设置
Busybox Settings --->
Installation Options("make install" behavior) --->
由上图可见,默认情况下值执行make install时BusyBox会被安装在其顶层目录的_install目录中。安装目录可以根据需要进行修改:通过向下方向键选中上图的(./_install)BusyBox installatiion prefix选项,然后输入安装路径即可:
Busybox Settings --->
General Configuration --->
[*]Don't use /usr
这个必需选中,否则在安装的时候将会将BusyBox安装在Ubuntu的/usr目录中,从而损坏了宿主机的根文件系统!
退出时记得确认保存,否则上述配置无效。
make
若没有在图4中设置交叉编译工具链前缀,则需要通过下述命令比编译和安装:
make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/home/liyihai/Mini2440/rootfs all install
执行make命令编译时(使用友善之臂的交叉工具链),出现错误如下:
改用创龙的交叉工具链,出现错误如下:
上述两幅图的错误是不一样的,因此可知说出现的错误与具体的编译器有关!
配置选项特别多,且在不同的BusyBox版本中,同一个选项可能会被安排到不同的菜单中,因此人工查阅特定的选项比较麻烦,幸好有搜索选项的工具,在任意菜单界面中输入斜杠“/”即可进入搜索框:
在上图中输入util关键字,搜索结果如下:
上图显示了包含关键字util的菜单位置,这个功能有助于定位引起编译错误的选项。
再次执行make menuconfig,取消引起编译的选项,然后重新编译即可解决上述编译错误。
对于图9的错误,取消umount选项即可:
Linux System Utilities --->
[ ] umount
对于图10的错误,取消sync选项即可:
Coreutils --->
[ ] sync
执行如下命令可将BusyBox安装到指定目录(如果用户没有设置,则默认安装目录为_install):
make install
上述命令会在安装目录中生成bin、sbin两个目录以及linuxrc一个链接文件。:
[1]使用BusyBox制作嵌入式Linux根文件系统
[2]根文件系统制作-et5
[3]linux下3.4.1交叉编译器编译busybox-1.20.2
[4]BUSYBOX编译错误及解决方法总结
[5]制作文件系统BusyBox的交叉编译
[6]busybox编译错误解决
[7]编译busybox的一些错误
[8]Ubuntu下为QEMU的arm平台交叉编译BusyBox
[9]交叉编译busybox