弱弱一问:能不能在2.4的内核上编译2.6的内核?
最近看书在学交叉编译工具的制作。我主机上是用虚拟机装了一个REDHAT9,内核是2.4的,然后下载了一个2.6.10的内核准备给TARGET用,但是我在HOST上编译这个2.6.10的时候老是会出错,所以我想,是不是因为我主机上用的内核版本太低了,它的库不够支持这个2.6.10的内核?不知道是不是这个原因~~?与HOST的内核版本无关
交叉编译器版本最好不要太低(比如2.95.3,具体没试过)<br /><br />另外,既然编译出现问题,就该你把的一些情况罗列下:<br />1)硬件平台,所使用的交叉编译器版本<br />2)出错提示信息等(尽可能完整点)<br />3)操作的大致过程哦,好的,谢谢~
我HOST平台使用的是REDHAT9.03版本,现在使用的GCC,应该也是这个版本自带的GCC,至少我没有设置过。<br />我下载了一个LINUX-2.6.10.TAR.GZ,然后解压。解压之后,在相应的LINUX-2.6.10目录内,执行:<br />make ARCH=arm CROSS_COMPILER=arm-linux- menuconfig<br />然后在配置界面中,选择S3C2410作为system type<br />保存当前配置退出。<br />执行make all(注:我不知道这里对不对,因为我书上写的对于2.4内核,此处是执行make dep,但是此处执行make dep,系统显示当前command is not necessary,而不执行make指令,在include/linux/中则没有version.h)<br />之后,编译报错:<br />linux-2.6.10/include/asm/processor.h:68 CONFIG_X86_L1_CACHE_SHIFT undeclared(not in a function)<br />linux-2.6.10/include/asm/processor.h:68 request aligment alignment is not a constant<br />...<br />...<br />linux-2.6.10/include/linux/prefetch.h:64 CONFIG_X86_L1_CACHE_SHIFT undeclared(first use in this function)<br /><br />不知道是什么原因,又该如何调整~哦,对了,还有~
刚刚我看了出错的这个两个头文件,很多定义里都有X86的字样,但是我现在的硬件平台(system type)已经设置为了S3C2410,怎么还是X86呢?是不是我刚刚在系统配置的时候,也不正确?主要是对gcc的要求。和内核无关。
~
我用 dmsg |grep gcc 查到我当前的GCC版本是3.2.2 够用么?很难说,一般来讲,4.0 以上的所有的2.6内核都能编译
不同2.6.x的版本要求也不一样,你试试看就知道了,会有提示的。如果能通过,就没有问题。<br />另外,还有bin-utilits的版本要求。<br />如果没有特别需要,最好装最新版本的linux。<br />大不了你连gcc,glibc,bin-utilits也升级呀.---连根都动了,似乎应该不算redhat9了。我那个开发系统没有装中文。
就是说: 你不加参数也能生成ARM内核。 在arch??的目录下都有, 以支持的硬件起的名。<br /><br />多看看内核源代码自带的doc就知道了。(80M啊, 呵呵, 全看一遍就高手了。。。)<br /><br />这个系统是linuxforOA, 准备给公司布置。 呵呵呵, 速度不是一般的快。
页:
[1]