想把ARM下的linux升级,
下载了linux-2.6.33.6并打了实时补丁后开编译:一直到最后在制作压缩文件时:出现了
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
CC arch/arm/boot/compressed/decompress.o
SHIPPED arch/arm/boot/compressed/lib1funcs.S
AS arch/arm/boot/compressed/lib1funcs.o
LD arch/arm/boot/compressed/vmlinux
arch/arm/boot/compressed/decompress.o: In function `do_decompress':
decompress.c:(.text+0x25c4): undefined reference to `error'
decompress.c:(.text+0x25e8): undefined reference to `error'
decompress.c:(.text+0x260c): undefined reference to `error'
decompress.c:(.text+0x2660): undefined reference to `error'
decompress.c:(.text+0x272c): undefined reference to `error'
make[2]: *** [arch/arm/boot/compressed/vmlinux] 错误 1
make[1]: *** [arch/arm/boot/compressed/vmlinux] 错误 2
make: *** [zImag 错误 2
即退出.
这是在2.6.28版本以前所没有的现象.
遍查网上资料,也无所获.
这遍文章中提到修改misc.c
增加extern void error(char *x);,试后也不行.
只能自己分析.
首先 在decompress.c中增加了do_decompress函数中增加了一句error("sdfsdfsdfsdfs");屏蔽decompress(
执行后不报错.说明在这里error函数是能用的,和编译报的错不相符....
通过查找,decompress()函数是在./lib/decompress_inflate.c 中用
#define decompress gunzip
指定是gunzip
摸摸索两天后才发现在这个回调函数中指定是error_fn.
但是在函数体中却又使用了error原型函数.
于是将函数体中的所有error 改为error_fn
编译通过.
特此记录,以备参考.
转载请附上原址,谢谢
einsteinz 2010年7月23日