在运行配置脚本之后,我得到了一系列的输出,这些输出显示“缓存”。例如:
checking for gcc... gcc
checking for gcc... (cached) gcc
...
checking dependency style of gcc... gcc3
checking dependency style of gcc... (cached) gcc3为什么gcc要在这里输出两次:一次是"gcc“,另一次是”(缓存)“。该脚本似乎正在执行两次检查。我认为脚本只需检查缓存中的变量,以加快执行速度。
另外,这些缓存的文件存储在哪里?根据autoconf文档,它说:
默认情况下,配置不使用缓存文件,以避免意外使用陈旧缓存文件造成的问题。
因此,在默认情况下,配置脚本似乎确实会缓存“检查”。我尝试运行"--config-cache",并创建了"config.cache“文件。
我还在我的配置脚本中运行了这个命令:
# optimization flags
if test "x$ac_cv_prog_gcc" = xyes; then
AC_MSG_CHECKING([AC_CV_PROG_GCC])
AC_MSG_RESULT("$ac_cv_prog_gcc")
fi但是变量"ac_cv_prog_gcc“在config.cache中是找不到的,所以我假设这些缓存的变量存储在其他地方。这些文件在哪里?
发布于 2018-11-13 03:17:52
为什么gcc要在这里输出两次:一次是"gcc“,另一次是”(缓存)“。该脚本似乎正在执行两次检查。
脚本会遇到两个相同的检查请求。它足够聪明,可以记住第一个结果,而不是在第二次执行实际检查。因为它是这样做的,所以它第二次报告结果是从其结果缓存中提取的,而不是计算的de novo。即使没有记录缓存文件,在脚本运行期间,它也有一个内存中的结果缓存。
一般来说,它不能完全抑制重复的检查,因为通常会有与检查相关的代码来处理结果,而且对于每个冗余检查,这并不一定是相同的代码。
我认为脚本只需检查缓存中的变量,以加快执行速度。
是的,这正是它所做的。它报告说,它已经这样做了,并得出了结果。这会在事件中通知您,它使用在上一次运行期间缓存的值,或者手动输入到缓存中,并且它可以在检查之间操作缓存的事件中提醒您。如果configure失败,它还可能帮助您更好地跟踪故障发生的位置。
另外,这些缓存的文件存储在哪里?根据autoconf文档,它说: 默认情况下,配置不使用缓存文件,以避免意外使用陈旧缓存文件造成的问题。因此,在默认情况下,配置脚本似乎确实会缓存“检查”。
默认情况下,默认情况下不会持久缓存检查。但是,所有缓存的结果至少在configure运行期间都会被缓存,如果您启用了一个缓存文件,那么它将用于持久缓存存储。
我尝试运行"--config-cache",并创建了"config.cache“文件。 我还在我的配置脚本中运行了这个命令:如果测试为"x$ac_cv_prog_gcc“=xyes,那么优化标志;然后AC_MSG_CHECKING(AC_CV_PROG_GCC) AC_MSG_RESULT("$ac_cv_prog_gcc") fi变量"ac_cv_prog_gcc”在config.cache中是找不到的,所以我假设这些缓存的变量存储在其他地方。
我不清楚你期望这样做能取得什么成就。如果要手动向缓存中输入值,则应为此使用宏。您似乎没有这样做,没有看到缓存的变量也就不足为奇了。
此外,还不清楚您是如何使用--config-cache选项的。该选项及其兄弟节点将在每次运行的基础上应用,以控制是否使用持久缓存(读和写)。任何名称的缓存文件的存在都不足以让您的configure脚本在任何给定的运行中实际使用它。
这些文件在哪里?
你已经在看了。它对您的--config-cache脚本使用-C或-C选项,然后缓存存储在config.cache中。如果使用--cache-file=XXX选项,则缓存将存储在您命名的文件中。
但是,总的来说,请注意(持久化)缓存可能不是您想要的。如果你认为这是一种特殊的需要,那么我建议你在另一个问题中直接询问这个需求。
https://stackoverflow.com/questions/53272185
复制相似问题