我正在尝试在我的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
我试着把它看成谷歌,但在那里找不到多少线索,任何人都可以告诉我该怎么办才能解决这个问题。
答案 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。 无论如何你为什么不使用更新的内核版本?