如何使用gnulib-tool确定要导入的内容

时间:2016-07-07 19:33:21

标签: cross-platform autotools gnulib

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

2 个答案:

答案 0 :(得分:1)

我的建议是ignore autoscan entirely,而是尝试找出您定位的平台。

特别是autoscan将尝试为自1990年以来在每个平台上可用的功能添加测试,但可能在非SysV OS上缺失。

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

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

完全披露:多年来我已经更改了my opinion on gnulib,并且如果可能的话,不建议再使用它。

答案 1 :(得分:0)

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

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

此外,仅为旧平台存在一些gnulib覆盖。您可以阅读list of what each override fixes,并自行判断。