Отсутствует файл при создании ядра 4.14.51

372
pr1268

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

Я скачал vanilla 4.14.51 с сайта kernel.org - я успешно скомпилировал свое собственное (немодифицированное) ядро ​​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/... Есть идеи?

0
Locate не гарантирует, что файл все еще там. Gerard H. Pille 5 лет назад 0
Хм, это есть в моей системе. stat $ (locate gelf.h) `дает обычный файл размером 5103 байта. `cat`ing этого файла показывает, что выглядит как набор кода препроцессора Си. `Copyright (C) 2000 - 2006 Майкл Рипе` pr1268 5 лет назад 0
Еще одна попытка: похоже, у вас нет elfutils. Но опять же: я бы не стал проверять / var / log на наличие установленных пакетов. Конечно, у Slackware есть какое-то управление пакетами? Может быть, сам ваш Slackware может сделать обновление? Gerard H. Pille 5 лет назад 0

0 ответов на вопрос

Похожие вопросы