0

autoscan产生了一系列的功能检查(AC_FUNC_*AC_CHECK_FUNCS),和AC_CHECK_HEADERS。现在我需要引入 gnulib 代码。我是否只是尝试导入自动扫描识别的每个函数和标题?其中一半没有出现在gnulib-tool --list输出中。还是我要等到./configure在某个平台上失败?

4

2 回答 2

1

我的建议是完全忽略自动扫描,而是尝试找出您的目标平台。

特别是 autoscan 将尝试为自 1990 年以来在每个平台上可用的功能添加测试,但例如在非 SysV 操作系统上可能会丢失。

从一个基本平台目标(例如 C99 和最新的 POSIX)开始,然后找出您想要定位的其他操作系统以及它们缺少什么。

不要试图覆盖您无法访问的操作系统的基础,您可能实际上不知道构建它们需要什么,更不用说运行了。

全面披露:多年来,我已经改变了对 gnulib的看法,如果可能的话,不再建议使用它。

于 2016-07-08T08:40:11.577 回答
0

有两种方法可以确定您可能需要的 gnulib 模块列表:

  • 您可以nm手动扫描源代码或目标文件(使用 )。
  • 您可以通过导入所有 POSIX 头文件模块gnulib-tool,然后添加-DGNULIB_POSIXCHECK到 CFLAGS,编译您的包,并分析生成的警告。

此外,一些 gnulib 覆盖只是为了旧平台而存在。您可以阅读每个覆盖修复的列表,并应用您自己的判断。

于 2017-06-24T00:07:59.483 回答