编译busybox-1.3.2的时候遇到的错误解决办法
busybox-1.3.2
linux system:fedora 11
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/fd.h:342: error: variable or field `__user'' declared void
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/fd.h:342: error: parse error before ''*'' token
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/fd.h:360: error: parse error before ''}'' token
make[2]: *** [getsize.o] Error 1
解决: 在引用 #include 的文档前面加上 #include
(原文没有写清具体是加什么东西,后来参考了一篇blog,解决了。特此感谢!)
在这个过程中关于e2fsprogs-1.39.tar.gz的交叉编译还会出现错误,这个问题挺难解觉,后来搜到一篇文章,我终于解觉了,方法是
修改/usr/local/arm/3.4.1/arm-linux/sys-include/linux
中fd.h
添加#include <linux/compiler.h>
miscutils/readahead.c: In function `readahead_main':
miscutils/readahead.c:26: warning: implicit declaration of function `readahead'
make[1]: *** [miscutils/readahead.o] 错误 1
make: *** [miscutils] 错误 2
原因:如果你在rh9中编译1.3以上的busybox你可能会遇到这样的问题readahead.c或taskset.c编译不过去,这个主要是内核或glibc版本低,所以有的地方不兼容的原因。编译的时候把它排除就可以了,选项在Miscellaneous Utilities中
解决: #make menuconfig
找到Miscellaneous Utilities选项,把它的readahead和taskset去掉
3. LINK busybox_unstripped
modutils/lib.a(insmod.o)(.text.insmod_main+0x444): In function `insmod_main':
: undefined reference to `query_module'
modutils/lib.a(insmod.o)(.text.insmod_main+0x47c): In function `insmod_main':
: undefined reference to `query_module'
modutils/lib.a(insmod.o)(.text.insmod_main+0x52c): In function `insmod_main':
: undefined reference to `query_module'
modutils/lib.a(insmod.o)(.text.insmod_main+0x580): In function `insmod_main':
: undefined reference to `query_module'
modutils/lib.a(insmod.o)(.text.insmod_main+0x65c): In function `insmod_main':
: undefined reference to `query_module'
modutils/lib.a(insmod.o)(.text.insmod_main+0x1124): In function `$a':
: undefined reference to `create_module'
collect2: ld returned 1 exit status
make: *** [busybox_unstripped] 错误 1
解决办法:
把编译器改成3.3.2版本