2014-03-26 103 views
0

我正在使用Ubuntu Linux 12.04和3.11内核。Linux内核编译错误elf_x86_64丢失

对于我的工作,我必须对内核进行修补才能实现其功能。

因此,我下载了带有该补丁的Linux 2.6.31.6内核,并尝试进行补丁,编译和安装。

当我尝试编译它总会有这样的错误:

CC  arch/x86/vdso/vgetcpu.o 
CC  arch/x86/vdso/vvar.o 
VDSO arch/x86/vdso/vdso.so.dbg 

gcc: Error: elf_x86_64: File or directory not found 
make[2]: *** [arch/x86/vdso/vdso.so.dbg] Error 1 
make[1]: *** [arch/x86/vdso] Error 2 
make: *** [arch/x86] Error 2 

对于RT 2.6的编译内核......我用像3.11一样CONFIGFILE(当然,一些编辑点)和我查看了/ arch/x86/vdso目录,并且vdso.so.dbg文件丢失(我不知道从哪里得到它)。

我希望你能帮助我,如果你需要一些进一步的信息,我会尽力提供给他们。

此致 阿德里安

+0

你为什么混合2.6与3.11?这显然要求麻烦。 – zoska

+0

我的前任告诉我,即使它们是两个不同的版本,它也应该运行。但是,是的,一旦我尝试修补3.11内核,我就能够编译并安装它。感谢您的建议。 – user3464421

+0

这两个内核中有许多很多差异,即使涉及文件内容和位置。这可能是你遇到的问题。 – zoska

回答

0

问题是如何GCC从arch/x86/vdso/Makefile得到一些标志。与

VDSO_LDFLAGS_vdso.lds = -m64 

更换

VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 

应该工作。

2

arch/x86/vdso/Makefile

VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 [...] 
... 
VDSO_LDFLAGS_vdso32.lds = -m elf_x86 [...] 

改为

VDSO_LDFLAGS_vdso.lds = -m64 [...] 
... 
VDSO_LDFLAGS_vdso32.lds = -m32 [...]