Грешка при изграждане на GRUB2 модул с функцията grub_efi_get_variable на efi

Това е в моя Makefile.core.def: ... ... module = { name = mymod; общ = 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
...

Може ли някой да хвърли светлина върху грешката и как да я поправя?

Благодаря,

P.S. Редактирах 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; общ = net/mymod.c; активиране = 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; общ = net/mymod.c; активиране = efi}; След повторно стартиране на autogen.sh към Makefile.core.am беше добавена само платформа с efi и компилацията работи.

person user2719735    schedule 31.10.2014