如何在编译linux内核时解决此错误

时间:2013-03-19 09:19:13

标签: linux linux-kernel archlinux

我正在尝试在我的Ubuntu机器上编译Linux内核源代码2.6.38.4,但是经过将近一个小时的过程得到以下错误

    VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds
    VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
    VDSOSYM arch/x86/vdso/vdso32-syms.lds
     LD      arch/x86/vdso/built-in.o
     LD      arch/x86/built-in.o
     LD      vmlinux.o
     MODPOST vmlinux.o
     WARNING: modpost: Found 7 section mismatch(es).
     To see full details build your kernel with:
     'make CONFIG_DEBUG_SECTION_MISMATCH=y'
      GEN     .version
      CHK     include/generated/compile.h
      UPD     include/generated/compile.h
      CC      init/version.o
      LD      init/built-in.o
      LD      .tmp_vmlinux1
      arch/x86/built-in.o: In function `xen_hvm_post_suspend':
      /home/amit/Linux_Kernel_Study/linux-2.6.38.4/arch/x86/xen/suspend.c:34:   undefined   reference to `xen_unplug_emulated_devices'
      make: *** [.tmp_vmlinux1] Error 1

我试着把它看成谷歌,但在那里找不到多少线索,任何人都可以告诉我该怎么办才能解决这个问题。

2 个答案:

答案 0 :(得分:1)

编译内核一小时很奇怪(或者你在旧硬件上编译)。尝试在编译时使用 -j 选项:

make -j8

它运行多个进程来编译你的源。

回到你的问题。您可能缺少内核配置中的某些内容。使用 make xconfig 并查找xen选项。如果您不需要Xen,只需从配置中删除所有xen-things(这也可以节省编译时间)

答案 1 :(得分:0)

这是链接器错误。 函数xen_hvm_post_suspend调用xen_unplug_emulated_devices,但链接器在目标文件中找不到它。

尝试找出定义此函数的位置,也许您的配置不包含所有必需的选项。 如果可能的话使用2.6.38.8内核,也许那里修复了bug。 无论如何你为什么不使用更新的内核版本?