内核编译错误:gcc: error: elf_i386: 没有那个文件或目录。

6
我卡在了将内核版本降级为2.6.22上。 错误信息如下:
SYSCALL arch/i386/kernel/vsyscall-int80.so gcc: error: elf_i386: 没有那个文件或目录 make[1]: * [arch/i386/kernel/vsyscall-int80.so] 错误 1 make: * [arch/i386/kernel] 错误 2
我已经尝试通过谷歌搜索答案,比如降低gcc版本等,但没有任何效果。 我的操作系统是ubuntu 11.04,内核版本为3.1.4。
问题出在哪里? 感谢您的回答。

为什么您想要降级? - kuba
4个回答

22

请检查位于arch/x86/vdso/Makefile下的vdso makefile。

找到行

 VDSO_LDFLAGS 
,其中存在两行,一行用于x64系统,另一行用于x32位系统。

应该有

-m elf_x86_64
和另一个
-m elf_x86

将它们分别替换为

-m64
-m32

参考修复错误的链接1 Lockergnome链接2 ubuntu


虽然您的回答可能解决其他人的问题,但它并不能解决这个问题,因为在问题中@KMHook指出有问题的系统调用发生在文件arch/i386/kernel/vsyscall-int80.so中,而您建议更改arch/x86/目录中的某些行。 - ecem

2

我在解决这个问题时使用了这个答案,并且在arch/i386/kernel目录下的Makefile中将-m elf_i386部分更改为-m32,这解决了问题,以供日后参考。


0

我已经修改了指定的Makefile文件(arch/x86/vdso/Makefile),并且问题得到了解决。 我的平台是Ubuntu-12.04,Linux 3.13.0-30。


-5

这个问题似乎在积极尝试特定降级到2.6.22版本,因此升级到3.5的指南似乎不相关...? - Tony Delroy
同意Tony所说的话。-1 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接