内核编译错误,请看看呢!

锦鲤gg 2010-10-20 08:11:25
环境:
CPU: AMD Athlon(tm) II X2 250 Processor stepping 02

vmare上装了
[root@localhost linux-2.6.35.7]# uname -r
2.4.20-8

打算编译2.6.35.7


步骤:
step1:make menuconfig

step2:make bzImage

出现如下错误:
[root@localhost linux-2.6.35.7]# make bzImage
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CC arch/x86/kernel/asm-offsets.s
In file included from /usr/src/linux-2.6.35.7/arch/x86/include/asm/bitops.h:447,
from include/linux/bitops.h:22,
from include/linux/kernel.h:17,
from /usr/src/linux-2.6.35.7/arch/x86/include/asm/percpu.h:44,
from /usr/src/linux-2.6.35.7/arch/x86/include/asm/current.h:5,
from /usr/src/linux-2.6.35.7/arch/x86/include/asm/processor.h:15,
from /usr/src/linux-2.6.35.7/arch/x86/include/asm/atomic.h:6,
from include/linux/crypto.h:20,
from arch/x86/kernel/asm-offsets_32.c:7,
from arch/x86/kernel/asm-offsets.c:2:
/usr/src/linux-2.6.35.7/arch/x86/include/asm/arch_hweight.h: In function `__arch_hweight32':
/usr/src/linux-2.6.35.7/arch/x86/include/asm/arch_hweight.h:29: parse error before string constant ---------->
In file included from include/linux/kobject.h:21,
from include/linux/module.h:16,
from include/linux/crypto.h:21,
from arch/x86/kernel/asm-offsets_32.c:7,
from arch/x86/kernel/asm-offsets.c:2:
include/linux/sysfs.h: At top level:
include/linux/sysfs.h:183: warning: parameter has incomplete type
/usr/src/linux-2.6.35.7/arch/x86/include/asm/cpufeature.h: In function `__static_cpu_has':
/usr/src/linux-2.6.35.7/arch/x86/include/asm/cpufeature.h:315: warning: asm operand 1 probably doesn't match constraints
make[1]: *** [arch/x86/kernel/asm-offsets.s] Error 1


...全文
436 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pcli_218 2011-04-19
谢谢Ropyn的回答,改了之后就可以make了,赞一个!
回复
lu-ping 2010-10-25
刚好我刚刚搞完,在网上看到你的帖子,就忍不住share一下经验(我有一两年没回答问题了,呵呵),也许正好解决你的问题。我也曾经被这个问题困扰了一天,最后自己修改代码通过编译。我用的是2.6.36的内核。
修改
/usr/src/linux-2.6.35.7/arch/x86/include/asm/arch_hweight.h:29行,
: "="REG_OUT (res)

:"=a" (res)

在这个头文件的开头,REG_OUT被定义为"a". 虽然前面有ifdef,但if和else入口REG_OUT都是"a".所以没有什么好担心。
很明显 "="REG_OUT 是正确的代码,但不知为什么GCC预编译器会报告为错误。直接替换成预编译后的代码就行了。kernel那帮人现在也很不认真。很明显没有做过gcc 3.2的测试。

内核2.6.35以后对这个地方进行了修改,加了一些代码,好像是为了解决ppc上的问题。
但估计他们也没想到会引起旧的(RH9)gcc报告这个错误。尽管RH9的GCC 3.2版本也是2.6.35,36版本内核所支持的。

顺便说一句,升级RH9到2.6.35,36的内核,难度相当大。后面有很多陷阱。升级到2.6.18可能简单很多。
回复
h85968099 2010-10-22
2.4还是算了吧,换2.6吧,
回复
Jerry_Lee01 2010-10-22
2.4和2.6的内核设计就是有差异的,我认为直接升级会不妥,建议直接从2.6的版本升级
回复
李迟 2010-10-21
中间隔了那么多,恐怕很难搞定。
回复
小e工作室 2010-10-21
内核版本这样升级很可能有问题,建议用2.6版本的内核!!
回复
steptodream 2010-10-20
晕 从2.4.20-8升到2.6.35.7

咿 刚好有人分析升级内核经验 看看吧
http://topic.csdn.net/u/20101020/18/8106543d-b68e-40f4-b929-73c4bb8dc397.html?69105
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4150

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-10-20 08:11
社区公告
暂无公告