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_WERROR
,CC_CHECK_FLAGS_APPEND
和 -Wdeprecated-declarations
,然后使用 AC_COMPILE_IFELSE
弄清楚整个事情是否编译。
是否有一种方法可以让 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_WERROR
,CC_CHECK_FLAGS_APPEND
和 -Wdeprecated-declarations
,然后使用 AC_COMPILE_IFELSE
弄清楚整个事情是否编译。