GRUB2 生成文件 (Makefile.core.def)
Posted
技术标签:
【中文标题】GRUB2 生成文件 (Makefile.core.def)【英文标题】:GRUB2 Makefile (Makefile.core.def) 【发布时间】:2014-12-02 10:56:19 【问题描述】:在grub2/grub-core的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 但我找不到它。我也尝试在线搜索,但找不到任何信息。
谢谢, 马特
【问题讨论】:
您是否尝试在互联网上搜索AutoGen definitions
?对我来说,第一次点击似乎与该文件及其内容相当相关。 gnu.org/software/autogen/manual/html_node/Definitions-File.html
您在 grub-devel 邮件列表中的问题表明这实际上可能与 ***.com/questions/25396711/… 重复。
【参考方案1】:
您所指的构造实际上已于去年 11 月在上游项目中消失,this commit。 regexp
模块现在只需直接包含 gnulib/regex.c
。
在此之前,它是作为构建的一部分生成的库,并放入grub-core
目录。 ldadd
指令只是使生成的 Makefile 将指定的库添加到当前模块的链接步骤中。
【讨论】:
感谢您的澄清。我看到 library = 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-core 目录的,但我在那里找不到。我尝试了 find 命令,但在任何地方都找不到。 不——就像我说的,它不再存在于 GRUB 的上游版本中。 我们还在使用旧版本,看来我们暂时不会更新了。以上是关于GRUB2 生成文件 (Makefile.core.def)的主要内容,如果未能解决你的问题,请参考以下文章
CentOS7重新生成 /boot/grub2/grub.cfg