您的位置:首页 > 运维架构 > Linux

编译内核linux-2.6.38 出现error (2013-03-28 10:42)

2013-10-29 10:38 435 查看
内核建议到官网下载, 当然如果签名对的话也可以

解压后, 保险起见

make mrproper

然后

make oldconfig

最后

make menuconfig 配置内核

然后再开始编译

在编译内核linux-2.6.38

出现以下问题:arch/x86/kernel/entry_32.S: Assembler messages:

arch/x86/kernel/entry_32.S:1422: Error: .size expression_r forapf_page_fault does not evaluate to a constant

make[2]: *** [arch/x86/kernel/entry_32.o] 错误 1

make[1]: *** [arch/x86/kernel] 错误 2

make: *** [arch/x86] 错误 2

解决方案:

这个跟内核的一个bug有关。已经有人提交了patch了。

自己也可以改一下 arch/x86/kernel/entry_32.S 中的两处地方再编译,具体请参考链接:
https://lkml.org/lkml/2011/3/20/49
This fixes the problem. The file does not have a maintainer listed,so

I don't know where else to send it than to the LKML. Pleasecorrect

me or redirect as needed.

解决办法:

修改两处:

- --- entry_32.S.original 2011-03-18 08:21:51.000000000 -0400

+++ entry_32.S 2011-03-20 10:37:00.000000000 -0400

@@ -343,7 +343,7 @@

# int/exception return?

jne work_pending

jmp restore_all

- -END(ret_from_exception)

+END(resume_userspace)

#ifdef CONFIG_PREEMPT

ENTRY(resume_kernel)

@@ -1413,7 +1413,7 @@

CFI_ADJUST_CFA_OFFSET 4

jmp error_code

CFI_ENDPROC

- -END(apf_page_fault)

+END(async_page_fault)

#endif

说明:其中带--号的END为要去除的行

带+号的END为要加入的行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: