1. 在使用linux-2.6.28的情况下:
1)kernel 能通过arm-linux-gcc版本3.4.1、4.3.2、4.4.3的编译;
2)busybox 能通过arm-linux-gcc版本3.4.1、4.3.2、4.4.3的编译;
3) 3.4.1、4.3.2、4.4.3 arm-linux-gcc版本编译的kernel均能与arm-linux-gcc版本3.4.1编译的busybox配合正常启动,
而与4.3.2、4.4.3版本的arr-linux-gcc编译的busybox不能正常配合正常启动,错误提示为:
Kernel panic - not syncing: Attempted to kill init!
4)需特别指出的是即使3.4.1版本arm-linux-gcc编译的busybox在使用4.3.2(4.4.3未测试) arm-linux-gcc的库时也能与4.3.2版本
arm-linux-gcc编译的kernel正常配合启动。
5)结论:busybox需用3.4.1arm-linux-gcc编译,而其对所依赖的gcc动态库版本要求宽松。
6)推论:busybox用3.4.1 ,kernel 可任选较合适的gcc版本编译.
7)所用到的软件测试版本:
kernel: 2.6.28
busybox: 1.7.3 / 1.22.1
arm-linux-gcc: 3.4.1 / 4.3.2 / 4.4.3
2 总结与分析
1)综合考虑,
采用arm-linux-gcc 4.3.2编译kernel&QT;
采用arm-linux-gcc 3.4.1编译busybox;
采用arm-linux-gcc 4.3.2 的libc库;
采用soft-float-arm-linux-gcc编译uboot。
2)待解问题,busybox之所以只能用3.4.1编译,而其它(两个)版本编译不能正常配合kernel启动,
可能的原因是:其它arm-linux-gcc版本编译时,虽通过了编译,但是期间有很多警告,可能并没有成功的
完整编译busybox,因此使用时会出错。
3)通过file 查看libc-xxx.so发现,(从)4.4.3版本的arm-linux-gcc开始支持的最低kernel版本为
linux-2.6.32 > linux-2.6.28。