提供给 ./configure 的 `ac_cv_func_malloc_0_nonnull` 是什么?

What is `ac_cv_func_malloc_0_nonnull` as provided to ./configure?

我正在与 mingw 交叉编译并得到这个错误:

undefined reference to `rpl_realloc'

some searching 之后,我发现这可以在 configure.ac 中解决,或者在调用 ./mingw64-configure 之前设置为环境变量:

ac_cv_func_malloc_0_nonnull=yes
ac_cv_func_realloc_0_nonnull=yes

是什么定义了这些宏,是否有关于该主题的文档?我找不到任何...

What defines these macros, and as there any documentation on the subject?

Autoconf 使用 ac_cv_ 前缀作为它的“缓存变量”,它记录了它执行的配置测试的结果。如果多次请求相同的检查,这些允许它使用先前确定的结果而不是再次执行检查。

这些的一般命名约定分别记录在 in the Autoconf manual. The particular cache variable names you ask about are documented to cache the results of the Autoconf's AC_FUNC_MALLOC and AC_FUNC_REALLOC 宏中。该文档还提到了 rpl_realloc 名称。

允许在 configure.ac 中使用这些变量以编程方式确定这些检查的结果,但直接为这些变量赋值是一个相对讨厌的 hack。然而,在这种特殊情况下,错误表明为您尝试构建的项目准备自动工具的人做得很草率。如果伪造缓存变量可以让您成功构建和运行程序,那么这是一个比实际修复项目更诱人且更容易的替代方法。