Ошибка при сборке модуля GRUB2 с помощью функции efi grub_efi_get_variable

Это в моем Makefile.core.def: ... ... module = {name = mymod; common = net / mymod.c; }; ... ...

При попытке собрать я получаю: mv syminfo.lst.new syminfo.lst cat syminfo.lst | сортировать | gawk -f /build/boot_project/src/grub/grub2/grub-core/genmoddep.awk> moddep.lst || (rm -f moddep.lst; выход 1) grub_efi_get_variable в mymod не определен make [5]: *** [moddep.lst] Ошибка 1

mymod.c has "#include <grub/efi/efi.h>" and tries to use "grub_efi_get_variable" function.  I see that in syminfo.lst
> more syminfo.lst
...
undefined mymod grub_efi_get_variable
...

Может кто-нибудь пролить свет на ошибку и как ее исправить?

Спасибо,

PS Я отредактировал Makefile.core.def и Makefile.core.am в / build / boot_project / src / grub / grub2 / grub-core /, чтобы включить мой модуль, и запустил autogen.sh в / build / boot_project / src / grub /, чтобы регенерировать Makefile.in, затем я запустил dmake в / build / boot_project / src / grub /


person user2719735    schedule 29.10.2014    source источник
comment
Для какой платформы вы строите и как вы ее настраиваете?   -  person unixsmurf    schedule 29.10.2014
comment
Я использую Solaris, работающий в системе x86. Я изменил grub2.core.def и grub2.core.am и построил. Никакой дополнительной настройки я не запускал.   -  person user2719735    schedule 29.10.2014
comment
Это настоящие имена файлов? Я даже не получаю по этому поводу ни одного обращения в Google. Как его собрать без какой-либо конфигурации? Откуда исходный код? Не могли бы вы отредактировать вопрос и добавить фактические команды, которые вы выполняете?   -  person unixsmurf    schedule 29.10.2014
comment
Да, это настоящие имена файлов, источник взят из дерева исходных текстов grub (старое дерево). Самый новый источник можно найти по адресу git.savannah.gnu.org/gitweb/. Я добавил дополнительную информацию к своему вопросу.   -  person user2719735    schedule 29.10.2014
comment
Это очень старый исходный код. Есть ли причина, по которой вы не можете использовать современный код? Но, учитывая это, я предполагаю, что вы не строите для платформы EFI. Попробуйте запустить configure с --with-platform = efi.   -  person unixsmurf    schedule 29.10.2014
comment
Если вы не перезапускаете configure, как вообще может быть скомпилирован ваш модуль?   -  person unixsmurf    schedule 30.10.2014
comment
Конфигурация запускалась с --with-platform = efi. Как бы то ни было, я заметил, что в Makefile.core.am все платформы включены для модуля mymod. Итак, я отредактировал Makefile.core.def следующим образом: module = {name = mymod; common = net / mymod.c; enable = efi}; После повторного запуска autogen.sh в Makefile.core.am была добавлена ​​только платформа с efi, и сборка заработала.   -  person user2719735    schedule 31.10.2014


Ответы (1)


Конфигурация запускалась с --with-platform = efi. Как бы то ни было, я заметил, что в Makefile.core.am все платформы включены для модуля mymod. Итак, я отредактировал Makefile.core.def следующим образом: module = {name = mymod; common = net / mymod.c; enable = efi}; После повторного запуска autogen.sh в Makefile.core.am была добавлена ​​только платформа с efi, и сборка заработала.

person user2719735    schedule 31.10.2014