PKG_CHECK_MODULES vs AC_CHECK_LIB 用于检查库的可用性

PKG_CHECK_MODULES vs AC_CHECK_LIB for checking availability of libraries

我正在为一个项目使用 autotools。我想了解检查库是否存在的最佳实践

我尝试使用 PKG_CHECK_MODULES,但不幸的是,我使用的许多库都没有出现在 pkg-config --list-all 中(即使在 运行 ldconfig 之后)。

另一种方法是使用 AC_CHECK_LIB,但这需要我从我需要测试的每个库中指定一个示例函数。

只要第三方软件支持 pkg-config,就使用它。如果第三方软件没有 pkg​​-config 支持,你必须自己写检查。

除非 Autoconf 已经提供了测试,或者您可以从其他开源项目复制测试。

我不同意已接受的答案。 (参见 PKG_CHECK_MODULES considered harmful?)PKG_CHECK_MODULES 在许多年前曾流行过一段时间,但从来没有被 autoconf 邮件列表中的大多数开发人员认为是好的做法。 autotools 不是包管理系统,并且 PKG_CHECK_MODULES 似乎是尝试将包管理功能塞入其中。如果包使用 PKG_CHECK_MODULES,配置脚本仍必须调用 AC_CHECK_LIB验证 pkg-config 返回的信息或冒构建失败的风险。此外,如果用户使用 LDFLAGS=-l/p/a/t/h/ 调用 configure,他们应该可靠地期望构建使用 /p/a/t/h/liboo.so 而不是使用其他位置,但是 PKG_CHECK_MODULES 要求用户覆盖 PKG_CONFIG_PATH 或以其他方式更改 pkg-config 的响应以覆盖库搜索路径。