Ошибка при компиляции ядра Linux версии 4.14.51

Не уверен, что здесь произошло. Я пытаюсь обновить kernel ​​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  ^ 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 ” уже находиться на моем компьютере? Или в ядре тарбол?

Я загрузил vanilla 4.14.51 с сайта kernel.org – я успешно скомпилировал свое собственное (немодифицированное) kernel ​​vanilla в течение 14 лет, но это ново.

Мой компьютер – это ноутбук Dell с Core2 i5 (64-разрядная версия) со Slackware 14.1 – я обновил версию 3.17.x с 4.4.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/Есть идеи?

Вам необходимо установить следующий пакет:

 libelf 

Он предоставляет заголовочный файл gelf.h и другие. Возможно, вы просто никогда не устанавливали его на свою машину.