2014-03-26 172 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 [...]