如何使用 gnulib-tool 确定要导入的内容
How do I determine what to import using gnulib-tool
autoscan
生成了一系列函数检查(AC_FUNC_*
和 AC_CHECK_FUNCS
),以及 AC_CHECK_HEADERS
。现在我需要引入 gnulib 代码。我是否只是尝试导入自动扫描识别的每个函数和 header?其中一半没有出现在 gnulib-tool --list
输出中。还是等到 ./configure
在某些平台上失败?
我的建议是 ignore autoscan entirely 而不是尝试找出您的目标平台。
特别是自动扫描将尝试为自 1990 年以来在每个平台上可用的功能添加测试,但例如在非 SysV OS 上可能会丢失这些功能。
从一个基本平台目标(例如 C99 和最新的 POSIX)开始,然后找出您想要定位的其他 OSes 以及它们缺少的内容。
不要试图覆盖您无法访问的 OSes 的基地,您可能实际上不知道他们需要建造什么,更不用说 运行 了。
完全披露:这些年来我已经改变了 my opinion on gnulib,如果可能的话,我不建议再使用它。
有两种方法可以确定您可能需要的 gnulib 模块列表:
- 您可以手动扫描源代码或目标文件(
nm
)。
- 您可以通过
gnulib-tool
导入 all the POSIX header file modules,然后将 -DGNULIB_POSIXCHECK
添加到 CFLAGS,编译您的包,并分析生成的警告。
此外,一些 gnulib 覆盖仅用于旧平台。您可以阅读 list of what each override fixes,并应用您自己的判断。
autoscan
生成了一系列函数检查(AC_FUNC_*
和 AC_CHECK_FUNCS
),以及 AC_CHECK_HEADERS
。现在我需要引入 gnulib 代码。我是否只是尝试导入自动扫描识别的每个函数和 header?其中一半没有出现在 gnulib-tool --list
输出中。还是等到 ./configure
在某些平台上失败?
我的建议是 ignore autoscan entirely 而不是尝试找出您的目标平台。
特别是自动扫描将尝试为自 1990 年以来在每个平台上可用的功能添加测试,但例如在非 SysV OS 上可能会丢失这些功能。
从一个基本平台目标(例如 C99 和最新的 POSIX)开始,然后找出您想要定位的其他 OSes 以及它们缺少的内容。
不要试图覆盖您无法访问的 OSes 的基地,您可能实际上不知道他们需要建造什么,更不用说 运行 了。
完全披露:这些年来我已经改变了 my opinion on gnulib,如果可能的话,我不建议再使用它。
有两种方法可以确定您可能需要的 gnulib 模块列表:
- 您可以手动扫描源代码或目标文件(
nm
)。 - 您可以通过
gnulib-tool
导入 all the POSIX header file modules,然后将-DGNULIB_POSIXCHECK
添加到 CFLAGS,编译您的包,并分析生成的警告。
此外,一些 gnulib 覆盖仅用于旧平台。您可以阅读 list of what each override fixes,并应用您自己的判断。