打印
[嵌入式linux]

弱弱一问:能不能在2.4的内核上编译2.6的内核?

[复制链接]
1826|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子小骑兵|  楼主 | 2008-12-5 00:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近看书在学交叉编译工具的制作。我主机上是用虚拟机装了一个REDHAT9,内核是2.4的,然后下载了一个2.6.10的内核准备给TARGET用,但是我在HOST上编译这个2.6.10的时候老是会出错,所以我想,是不是因为我主机上用的内核版本太低了,它的库不够支持这个2.6.10的内核?不知道是不是这个原因~~?

相关帖子

沙发
goosen| | 2008-12-5 08:30 | 只看该作者

与HOST的内核版本无关

交叉编译器版本最好不要太低(比如2.95.3,具体没试过)

另外,既然编译出现问题,就该你把的一些情况罗列下:
1)硬件平台,所使用的交叉编译器版本
2)出错提示信息等(尽可能完整点)
3)操作的大致过程

使用特权

评论回复
板凳
电子小骑兵|  楼主 | 2008-12-5 10:57 | 只看该作者

哦,好的,谢谢~

我HOST平台使用的是REDHAT9.03版本,现在使用的GCC,应该也是这个版本自带的GCC,至少我没有设置过。
我下载了一个LINUX-2.6.10.TAR.GZ,然后解压。解压之后,在相应的LINUX-2.6.10目录内,执行:
make ARCH=arm CROSS_COMPILER=arm-linux- menuconfig
然后在配置界面中,选择S3C2410作为system type
保存当前配置退出。
执行make all(注:我不知道这里对不对,因为我书上写的对于2.4内核,此处是执行make dep,但是此处执行make dep,系统显示当前command is not necessary,而不执行make指令,在include/linux/中则没有version.h)
之后,编译报错:
linux-2.6.10/include/asm/processor.h:68 CONFIG_X86_L1_CACHE_SHIFT undeclared(not in a function)
linux-2.6.10/include/asm/processor.h:68 request aligment alignment is not a constant
...
...
linux-2.6.10/include/linux/prefetch.h:64 CONFIG_X86_L1_CACHE_SHIFT undeclared(first use in this function)

不知道是什么原因,又该如何调整~

使用特权

评论回复
地板
电子小骑兵|  楼主 | 2008-12-5 11:03 | 只看该作者

哦,对了,还有~

刚刚我看了出错的这个两个头文件,很多定义里都有X86的字样,但是我现在的硬件平台(system type)已经设置为了S3C2410,怎么还是X86呢?是不是我刚刚在系统配置的时候,也不正确?

使用特权

评论回复
5
wangkj| | 2008-12-5 11:07 | 只看该作者

主要是对gcc的要求。和内核无关。

使用特权

评论回复
6
电子小骑兵|  楼主 | 2008-12-5 11:30 | 只看该作者

我用 dmsg |grep gcc 查到我当前的GCC版本是3.2.2 够用么?

使用特权

评论回复
7
wangkj| | 2008-12-7 09:49 | 只看该作者

很难说,一般来讲,4.0 以上的所有的2.6内核都能编译

不同2.6.x的版本要求也不一样,你试试看就知道了,会有提示的。如果能通过,就没有问题。
另外,还有bin-utilits的版本要求。
如果没有特别需要,最好装最新版本的linux。
大不了你连gcc,glibc,bin-utilits也升级呀.---连根都动了,似乎应该不算redhat9了。

使用特权

评论回复
8
sinanjj| | 2008-12-9 11:52 | 只看该作者

我那个开发系统没有装中文。

就是说: 你不加参数也能生成ARM内核。 在arch??的目录下都有, 以支持的硬件起的名。

多看看内核源代码自带的doc就知道了。(80M啊, 呵呵, 全看一遍就高手了。。。)

这个系统是linuxforOA, 准备给公司布置。 呵呵呵, 速度不是一般的快。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

32

帖子

0

粉丝