busybox编译心得

今天在Ubuntu9.10上编译busybox,执行make menuconfig后发现了如下错误
scripts/kconfig/lxdialog/checklist.c:283: warning: implicit declaration of function ‘delwin’ 
scripts/kconfig/lxdialog/checklist.c:287: error: ‘KEY_LEFT’ undeclared (first use in this function) 
scripts/kconfig/lxdialog/checklist.c:288: error: ‘KEY_RIGHT’ undeclared (first use in this function) 
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] Error 1 make[1]: *** [menuconfig] Error 2 
make: *** [menuconfig] Error 2 
原因:
    缺少libncurses5-dev 头文件
解决方法:
    sudo apt-get install libncurses5-dev  

1).miscutils/ionice.c:16: error: 'SYS_ioprio_set' undeclared (first use in> this function)

解决方法:
在busybox应用里关闭 ionice 选项
$ make meunconfig
选择下面的菜单:
Miscellaneous Utilities --->
[ * ] ionice
按空格去掉这个选项
2).
miscutils/ubi_tools.c:63:26: 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)
解决办法:
在include下新建mtd目录,从linux-2.6.28.7/include/mtd拷贝文件ubi-user.h到该目录下
3).
networking/interface.c:806: error: `ARPHRD_INFINIBAND' undeclared here (not in a function)
networking/interface.c:806: error: initializer element is not constant
networking/interface.c:806: error: (near initialization for `ib_hwtype.type')
在文件interface.c中加入如下语句
#define ARPHRD_INFINIBAND 32 /* InfiniBand */
这个是从文件include/linux/if_arp.h中得到
4).
......parse error before '_u16'
......parse error before 'jk'
......parse error before k
networking/udhcp/dhcpc.c: In function `udhcp_raw_socket':
networking/udhcp/dhcpc.c:821: error: elements of array `filter_instr' have incomplete type
搜了一下百度,网上最多的解决方法是把networking都干掉,我根据提示,改了一下,将/FL2440/usr/local/arm/3.4.1/arm-linux/sys-include/llinux/filter.h中的sock_filter类型的定义改成了
struct sock_filter /* Filter block */ { unsigned short code; /* Actual filter code */ 原来为__u16 unsigned char jt; /* Jump true */ unsigned char jf; /* Jump false */ unsigned int k; /* Generic multiuse field */ };
或者直接添加头文件 #include <linux/types.h>
5).
/opt/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/percpu.h:45: error: `GFP_KERNEL' undeclared (first use in this function)
/opt/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/percpu.h:45: error: (Each undeclared identifier is reported only once
/opt/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/percpu.h:45: error: for each function it appears in.)
In file included from /opt/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/ext2_fs.h:20,
网上建议的解决方法是:
去掉
Linux System Utilities --->
[ ] mkfs_ext2
[ ] mkfs_vfat
我没有采纳,在percpu.h中定义了#define GFP_KERNEL 0 (改值参考内核代码)
后面又出现了类似4中的问题,估计是u16,u32等类型未定义无法识别造成的parse error before..错误,用类似方法得以解决,不必采用极端的注释掉的方法。
当然,最为理想的是包含头文件#include <linux/types.h>
6).
出错:linux/ext2_fs_sb.h中342行出现的void __usr *data无法识别,添加头文件#include <linux/compiler.h>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值