【问题标题】:PKG_CHECK_MODULES vs AC_CHECK_LIB for checking availability of librariesPKG_CHECK_MODULES 与 AC_CHECK_LIB 用于检查库的可用性
【发布时间】:2015-06-12 22:22:37
【问题描述】:

我正在为一个项目使用自动工具。我想了解检查库是否存在时的最佳做法

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

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

【问题讨论】:

    标签: autotools autoconf pkg-config


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我最终决定单独为这些库使用 AC_CHECK_LIB。
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多