BusyBox 1.19.3编译错误解决办法


在busybox官网上或在  上下载最新的busybox1.19.3,同时将补丁也打上。采用默认配置即:make defconfig 之后,采用make menuconfig 配置几个重要的配置项目。同时修改交叉编译器的环境:

ARCH            ?= arm
CROSS_COMPILE   ?= /usr/local/arm/3.3.2/bin/arm-linux-

之后,正式编译busybox,哇呜啊,出现了UBI的错误哦。

miscutils/ubi_tools.c:63:26: error: mtd/ubi-user.h: No such file or directory
miscutils/ubi_tools.c: In function 'ubi_tools_main':
miscutils/ubi_tools.c:133: error: 'UBI_DEV_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:133: error: (Each undeclared identifier is reported only once
miscutils/ubi_tools.c:133: error: for each function it appears in.)
miscutils/ubi_tools.c:134: error: 'UBI_VOL_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:153: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:161: error: 'UBI_IOCATT' undeclared (first use in this function)
miscutils/ubi_tools.c:153: warning: unused variable 'req'
miscutils/ubi_tools.c:167: error: 'UBI_IOCDET' undeclared (first use in this function)
miscutils/ubi_tools.c:170: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:177: error: 'UBI_MAX_VOLUME_NAME' undeclared (first use in this function)
miscutils/ubi_tools.c:184: error: 'UBI_STATIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:186: error: 'UBI_DYNAMIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:195: error: 'UBI_IOCMKVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:170: warning: unused variable 'req'
miscutils/ubi_tools.c:201: error: 'UBI_IOCRMVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:204: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:214: error: 'UBI_IOCRSVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:204: warning: unused variable 'req'
miscutils/ubi_tools.c:222: error: 'UBI_IOCVOLUP' undeclared (first use in this function)
make[1]: *** [miscutils/ubi_tools.o] 错误 1
make: *** [miscutils] 错误 2

出现这么多的错误,核心问题就是出现在miscutils/ubi_tools.c:63:26: error: mtd/ubi-user.h: No such file or directory这个上面,无法找到mtd/ubi-user.h头文件,查阅了相关资料后,原来这是一个Linux下新支持的UBI文件系统,需要手工加入。从Linux2.6.29的include\mtd\ubi-user.h拷贝到busybox下的include\mtd下,如果busybox下的include没有mtd文件夹,那就先建立一个mtd文件夹,然后复制了。这样做了之后,编译就OK了。出现下面的信息就说明编译成功了。

LINK    busybox_unstripped
Trying libraries: crypt m
 Library crypt is not needed, excluding it
 Library m is needed, can't exclude it (yet)
Final link with: m
  DOC     busybox.pod
  DOC     BusyBox.txt
  DOC     busybox.1
  DOC     BusyBox.html

之后就是安装busybox了。make install 等一会就可以看到_install文件夹了。差不多300多MB啊。当然你可以根据自己的需要去裁剪busybox啊。见下面部分信息:

  ./_install//usr/sbin/ubimkvol -> ../../bin/busybox
  ./_install//usr/sbin/ubirmvol -> ../../bin/busybox
  ./_install//usr/sbin/ubirsvol -> ../../bin/busybox
  ./_install//usr/sbin/ubiupdatevol -> ../../bin/busybox
  ./_install//usr/sbin/udhcpd -> ../../bin/busybox


--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.

相关内容