如何修复“PKG_PROG_PKG_CONFIG: command not found”错误?

我有一个Ubuntu 13.10 32位系统。最近,当我尝试通过运行./autogen.sh./configure来编译时,我遇到了问题。
 PKG_PROG_PKG_CONFIG: command not found

错误。我已经安装了libtool。在usr/share/目录下有三个aclocal文件,分别是alocalaclocal-1.13aclocal-1.4
我该如何修复这个alocal错误?
编辑:
一段时间前,我从源代码编译并安装了最新版本的automake,因为一个源代码需要较新版本的automake来运行configure进程。 从那时起,每当我在源代码目录中运行标准的./autogen/configure命令生成makefile时,我都会得到以下错误信息:
  PKG_PROG_PKG_CONFIG: command not found

错误
  find /usr -name "pkg.m4"

给我

  /usr/share/aclocal/pkg.m4

并且

  aclocal --print-ac-dir

给我
  /usr/local/share/aclocal

pkg-config包已安装吗?您的系统上是否存在文件/usr/share/aclocal/pkg.m4 - steeldriver
你在尝试编译什么? - jobin
find /usr -name "pkg.m4" 告诉我 /usr/share/aclocal/pkg.m4 - kenn
@Jobin 我正在尝试编译这个:https://codeload.github.com/blazt/submarine/zip/master - kenn
aclocal --print-ac-dir会输出什么内容? - steeldriver
@steeldriver 这是 /usr/local/share/aclocal 路径。 - kenn
所以问题似乎是你的pkg.m4宏文件在/usr/share目录下,但由于某种原因aclocal正在寻找/usr/local/share目录。在不了解你是如何陷入这种情况的情况下,很难建议最佳修复方法 - 也许你安装了一个本地(非标准)版本的automake - steeldriver
@steeldriver 是的,我也这样认为,但我不记得具体是什么时候。我重新安装了 pkg-config,但问题并未解决。感谢您帮助我找出了问题所在。谢谢。 - kenn
你可以尝试设置(或导出)ACLOCAL_PATH环境变量,例如ACLOCAL_PATH=/usr/share/aclocal ./autogen.shexport ACLOCAL_PATH=/usr/share/aclocal ; ./autogen.sh ; ./configure- 请参阅此处 - steeldriver
@steeldriver 没问题。你可以把它发表为一个答案吗?这对读者可能会有帮助。 - kenn
请将所有评论的信息添加到您的问题中。 - Braiam
1个回答

PKG_PROG_PKG_CONFIG变量是指一个宏pkg.m4,该宏作为pkg-config软件包的一部分提供。因此,首先要检查的是pkg-config是否已安装,并且宏文件位于默认位置(当然还要可读)。
dpkg -l pkg-config

ls -l /usr/share/aclocal/pkg.m4

如果检查通过,那么问题就变成了为什么aclocal找不到它?您可以使用--print-ac-dir开关来检查aclocal配置的第三方m4文件的位置。
aclocal --print-ac-dir

如果这与上面的位置不同,那就意味着您的系统上存在非标准版本的automake - 如果您无法解决此问题,那么一个可能的解决方法是在运行autogen.sh脚本之前设置或导出ACLOCAL_PATH环境变量。例如:
ACLOCAL_PATH=/usr/share/aclocal ./autogen.sh

或者
export ACLOCAL_PATH=/usr/share/aclocal
./autogen.sh
./configure

请参阅GNU automake手册中的宏搜索路径部分。

或者,PKG_PROG_PKG_CONFIG 可能来自于变量赋值时的拼写错误,例如 PKG_PROG_PKG_CONFIG<空格>=... 而不是 PKG_PROG_PKG_CONFIG=...。在您的文件中使用 grep "PKG_PROG_PKG_CONFIG " - waltinator