制作内核4.14.51时缺少文件


0

不知道这里发生了什么。我正在尝试将我的Linux内核从4.9.x升级到4.14.x,并且发生了以下情况:

In file included from arch/x86/decode.c:26:0:
arch/x86/../../elf.h:22:18: fatal error: gelf.h: No such file or directory
 #include <gelf.h>
                  ^
compilation terminated.
mv: cannot stat ‘/usr/src/linux-4.14.51/tools/objtool/arch/x86/.decode.o.tmp’: No such file or directory
make[4]: *** [/usr/src/linux-4.14.51/tools/objtool/arch/x86/decode.o] Error 1
make[3]: *** [arch/x86] Error 2
make[2]: *** [/usr/src/linux-4.14.51/tools/objtool/objtool-in.o] Error 2
make[1]: *** [objtool] Error 2
make: *** [tools/objtool] Error 2

这里发生了什么想法(明显除外)?应该“ gelf.h”已经在我的电脑上吗?还是在内核tarball中?

我从kernel.org下载了vanilla 4.14.51 - 我已经成功地重复编译了我自己的(未经修改的)香草内核14年了,但这是新的。

我的电脑是配备Core2 i5(64位)和Slackware 14.1的戴尔笔记本电脑 - 几年前我用3.1.x升级了3.17.x股票,最近升级到4.9.x(目前为4.9.109)。

确实安装了libelf:

me@mylaptop:~$ locate gelf.h
/usr/include/libelf/gelf.h

me@mylaptop:~$ ls /var/log/packages/*elf*
/var/log/packages/libelf-0.8.13-x86_64-2

附录

在昨晚尝试4.14.55时,我注意到内核构建脚本期望看到“gelf.h”的目录位于内核源代码树中,而不是常规目录/usr/include

话虽这么说,在我的(运行)4.9.x源代码树相应的目录下并没有任何.o也不.ko文件。显然在4.14.x中启用了一个我在4.9.x中没有启用的配置项。

我已经尝试将4.14.x配置为尽可能靠近我工作的4.9.x; 我知道一些新的选项,但通常我会尝试在中间内核版本之间保持相同的配置。

话虽这么说,我不知道是什么配置选项,它想要看到头文件linux-4.14.*/tools/objtool/arch/x86/... 任何想法?


定位不保证文件仍然存在。
Gerard H. Pille

嗯,它在我的系统上。stat $(locate gelf.h)给出一个大小为5103字节的常规文件。 cat该文件显示了一堆C预处理器代码。Copyright (C) 2000 - 2006 Michael Riepe
pr1268

另一个尝试:它看起来好像你没有elfutils。但话说回来:我不会检查/ var / log是否已安装包。Slackware肯定有某种包管理吗?可能是你的Slackware本身可以做更新吗?
Gerard H. Pille

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.