使用 pkg-config 宏 PKG_CHECK_MODULES 失败

Posted

技术标签:

【中文标题】使用 pkg-config 宏 PKG_CHECK_MODULES 失败【英文标题】:Using the pkg-config macro PKG_CHECK_MODULES failing 【发布时间】:2012-01-24 13:52:11 【问题描述】:

我确信这是一个相当简单的问题。我有一个非常简单的 configure.ac 文件,我用它来学习 autoconf 和 pkg-config 如何一起工作。 confgure.ac 文件如下所示:

AC_PREREQ(2.61)
AC_INIT(autoconf_test, 1.0, nowhere@dev.null)

PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4)

然后我可以从命令行执行 autoconf,它会生成一个配置脚本。但是,当我运行配置脚本时,出现以下错误:

./configure: line 1618: syntax error near unexpected token `libusbmuxd,'
./configure: line 1618: `PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4)'

如果我从命令行使用 pkg-config 程序检查是否可以找到这个库,它会成功。

/usr/lib/pkgconfig $pkg-config --libs --cflags --modversion libusbmuxd

1.0.7
-I/usr/local/Cellar/usbmuxd/1.0.7/include  -L/usr/local/Cellar/usbmuxd/1.0.7/lib -lusbmuxd  

所以,很明显,由于某种原因无法找到 PGK_CHECK_MODULE 宏,我不知道为什么。

这可能不是特定于操作系统的,但我使用的是 Mac OS X 10.6.8。

【问题讨论】:

如果我没记错的话,宏在文件pkg.m4 中。你能在/usr/share/aclocal 或类似目录的某个地方找到这个文件吗? 使用 'aclocal --print' 确定要在其中查找 pkg.m4 的目录 你是如何安装 pkg-config 的,你是如何安装 autotools 的? 【参考方案1】:

当您进行引导(即运行 autoreconf)时,aclocal 无法找到 pkg.m4。这是因为 pkg-config 要么没有安装,要么安装在 aclocal 不知道的地方。 (即,它的安装前缀与 automake 不同。)要解决此问题,您需要找到 pkg-config 安装 pkg.m4 的位置并将该目录添加到搜索路径中。例如,如果pkg-config 安装了$HOME/share/aclocal/pkg.m4,你应该运行autoreconf -I$HOME/share/aclocal

实际上有一个大的学派认为,将 pkg-config 与 autotools 一起使用的最佳方法是不使用它。如果您查看 autoconf 邮件列表存档,您会看到这个备受争议的广告。请注意,许多人确实建议完全避免它。

【讨论】:

【参考方案2】:

似乎自制软件的人认为这不是他们的问题并将其扫入警告。超级令人沮丧,因为没有人会看到,因为没有人使用自制软件或自动制作软件,并期望必须深入挖掘错误的细节。 Here's the link.

【讨论】:

以上是关于使用 pkg-config 宏 PKG_CHECK_MODULES 失败的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 pkg-config 但它不是注册命令

linux ubuntu pkg-config工具的使用(源代码编译库接口查询工具)

从`cmake`使用`pkg-config`的正确方法是啥?

如何在 pkg-config 中使用 C++ Boost 库?

pkg-config

在 Windows 中使用 pkg-config 查找库