基于uclibc-ng的交叉编译内核,内核打印booting the kernel后停止了
~青花瓷 2017-07-08 07:23:42 本人用的linux3.3.x 版本,虚拟机是ubuntu10.4,交叉编译环境一开始用的是gnu glibc交叉编译工具gcc-4.4.4,
编译出来的ubi文件系统精简后也要7M左右,
但还是不太能满足系统要求,因为我们的flash比较小,
然后我使用buildroot做了一个基于uclibc-ng的交叉编译工具,在编译的时候,将原先的make uImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
改为make uImage ARCH=arm CROSS_COMPILE=arm-none-uClibcgnueabi- 编译一开始不成功,在编译kernel/bound.s时报错,提示没有找到compile_gcc5.h。
然后我在buildroot的一个文件夹下面找到了compile_gcc.h,放到include /linux目录下边。 之后 编译结束,生成内核映象文件。
烧到FLASH以后,结果内核无法启动,打印显示:
Uncompressing Linux.done,booting the kernel 就没有下文了,停止了
问题是用glibc交叉编译工具Make uImage,生成的映象文件烧到FLASH后能够正常启动内核
现在不知道什么原因了,
目前想到的:1. u-boot我还没有用uclibc这个交叉编译环境编译过, 而内核已经是新的交叉编译环境make,并烧进去了
也就是说FLASH上的uboot还是用gcc-4.4.4编译的版本,而FLASH上的内核是uclibc编译的版本, 会不会两个不同的
交叉编译环境 不匹配??
2. 交叉编译环境本身有问题
不知道哪位大侠有做过基于buildroot生成的uclibc的交叉编译环境 编译过内核的??