GRUB2生成文件(Makefile.core.def)

GRUB2生成文件(Makefile.core.def),makefile,grub,Makefile,Grub,在grub2/grub核心的Makefile.core.def中 module = { name = regexp; common = commands/regexp.c; common = commands/wildcard.c ldadd = libgnulib.a; cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)'; cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNU

在grub2/grub核心的Makefile.core.def中

module = {
    name = regexp;
    common = commands/regexp.c;
    common = commands/wildcard.c
    ldadd = libgnulib.a;
    cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
    cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)'
};
ldadd做什么?libgnulib.a住在哪里?我试图在grub目录中搜索libgnulib.a,但找不到它。我也尝试在线搜索,但找不到任何信息

谢谢,
马特

您所指的结构实际上在去年11月的上游项目中消失了。
regexp
模块现在只直接包括
gnulib/regex.c


在此之前,它是作为构建的一部分生成的库,并放在
grubcore
目录中。
ldadd
指令只会导致生成的生成文件将指定的库添加到当前模块的链接步骤中。

您是否尝试在internet上搜索
自动生成定义
?对我来说,第一次点击似乎与该文件及其内容相当相关。您在grub-devel邮件列表上的问题表明,这实际上可能是的副本。感谢您的澄清。我看到库={name=libgnulib.a;common=gnulib/regex.c;cflags='$(cflags_POSIX)$(cflags_gnulib)';cppflags='$(cppflags_POSIX)$(cppflags_gnulib);};为什么将“gnulib/regex.c”用于公共平台?“common”只是指为所有目标平台构建并包含在模块中。具有处理器或固件体系结构特定位的某些模块还包含每个体系结构包含的源文件;例如“linux”模块。您提到libgnulib.a是作为构建的一部分生成的,并放在grub核心目录中,但我在那里找不到它。我尝试了find命令,但在任何地方都找不到它。不,就像我说的,它不再存在于GRUB的上游版本中。我们仍在使用较旧的版本,看起来我们暂时不会更新。