autoconf:检测弃用的函数(在 Glibc 中)

autoconf: Detect deprecated functions (in Glibc)

是否有一种方法可以让 Autotools 测试 GNU libc 中已弃用的给定函数?

我一直在使用 AC_CHECK_FUNCS(readdir_r) 来测试系统是否有 readdir_r()。但是现在,由于 GNU Libc 2.24,readdir_r() 已被弃用,我想在这些系统上使用 readdir()

autoconf 是否有宏来测试给定函数是否被弃用?如果不是,最好的处理方法是什么?

我知道带有 -Wdeprecated-declarations 的较新 GCC 会打印警告。但我正在寻找的是在配置时找到已弃用的函数,以便我可以改用推荐的函数。

不容易,因为 AC_CHECK_FUNCS 检查函数是否在 link 时间可用。你可以做的是使用 attribute.m4(比如 systemd 附带的),使用 CC_CHECK_WERRORCC_CHECK_FLAGS_APPEND-Wdeprecated-declarations,然后使用 AC_COMPILE_IFELSE弄清楚整个事情是否编译。