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

时间:2015-04-08 05:20:56

标签: autotools autoconf pkg-config

我正在为项目使用autotools。在检查库的存在时,我想了解最佳实践吗?

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

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

2 个答案:

答案 0 :(得分:1)

我不得不同意接受的答案。 (参见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的响应,以覆盖库搜索路径。

答案 1 :(得分:0)

每当第三方软件支持pkg-config时,请使用它。如果第三方软件没有pkg-config支持,则必须自己编写支票。

除非Autoconf已提供测试,否则您可以从其他开源项目中复制测试。