【问题标题】:How to solve configure checking如何解决配置检查
【发布时间】:2011-11-13 11:47:48
【问题描述】:

现在我只是想在 Windows 上使用 MSYS 从源代码构建 libsamperate,但我遇到了一个配置检查问题,我之前安装了 FFTW 和 libsndfile,它们的包含文件 lib 文件和 pkg-config 文件都正确地方,但是当我使用 sh ./configure 为 libsamprate 生成 makefile 时,输出总是提到

checking for pkg-config... no
checking for SNDFILE... no

我还设置了 PKG_CONFIG_PATH(usr/local/lib/pkgconfig) 并尝试了很多次但结果似乎相同

有人知道吗?

【问题讨论】:

  • configure 脚本会留下一个config.log 文件,其中列出了已完成的确切检查以及它们产生的任何错误消息。它相当大,但看看它并尝试找到与 pkg-config 测试相关的部分(因为它没有找到 pkg-config,它也不可能找到 SNDFILE,所以不要关心那个检查一下)。如果它不能让您知道什么设置不正确,请尝试将相关位添加到问题中。
  • 我检查了日志文件,但似乎没有那么有用的信息...
  • 你能解释一下sh.exe是如何搜索第三方库的吗?
  • sh.exe 不搜索第 3 方库。 configure 脚本(由 sh.exe 解释)可以。此外,您对它如何搜索库不感兴趣(询问 pkg-config(如果库使用它,但您似乎使用它)),但对它如何搜索 pkg-config 不感兴趣(它没有找到它,所以它比不能问它库的安装位置)。好吧,它只是尝试运行pkg-config (pkg-config.exe)。如果不在PATH 中,则找不到。
  • 非常感谢! :)

标签: autoconf msys pkg-config


【解决方案1】:

如 cmets 中所述,您的环境未设置为运行 pkg-config 可执行文件。与 pkg-config 相关的问题有很多,并且越来越流行建议正确的解决方案是完全停止使用它。不幸的是,如果您尝试安装使用 pkg-config 的软件包,您将无法使用该解决方案。您可以获得的最接近的方法是在您的环境中将 PKG_CONFIG 设置为“true”或“:”。这会导致 pkg-config 不发出任何输出,但在运行时总是返回 true,因此您需要通过标准机制(LDFLAGS 等)指定库和头文件的位置。

pkg-config 很棒,因为它允许用户(安装软件包的人)不了解标准标志。 pkg-config 的问题在于它允许用户无知。

作为包维护者,您应该停止使用 pkg-config。作为用户,您应该在您的环境或 config.site 中设置 PKG_CONFIG=:,或者养成使用 PKG_CONFIG=: 作为参数调用配置的习惯。 (如果您使用的包依赖于古老的 autoconf,而您无法将此类标志作为参数传递,我不确定适当的操作是什么,但建议升级包维护者可能不是一个坏主意。)

【讨论】:

  • 感谢您的精彩回答 :)
  • 这个答案完全是愚蠢的。 pkg-config 绝对比手动传递 CFLAGS 和 LDFLAGS 更好很多,因为某些库可能需要特殊的 CFLAGS 和 LDFLAGS。 pkg-config 非常易于使用,并且只配置了 PKG_CONFIG_PATH 环境变量,如果您正在交叉编译,可能还配置了 PKG_CONFIG_SYSROOT_DIR。
  • @Thomas pkg-config 非常易于使用,是一个有用的工具。 PKG_CHECK_MODULES 是一个可怕的组合,永远不应该使用。无需手动设置 CFLAGS 或 LDFLAGS;这就是 config.site 的用途。 PKG_CHECK_MODULES 对于不知道如何使用工具的人来说是一个拐杖,它经常给会使用这些工具的人带来问题。这个问题已经讨论了很多年了,autotool 邮件列表上的共识是它是可憎的。
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2012-01-26
  • 2015-03-31
  • 2013-09-05
相关资源
最近更新 更多