如果您在非标准前缀中安装了软件,请考虑调整 PKG_CONFIG_PATH 环境变量。
这是什么意思 ?
答案1
PKG_CONFIG_PATH
pkg-config
是一个环境变量,它指定将在其中搜索其 .pc 文件的附加路径。
此变量用于扩充 pkg-config 的默认搜索路径。在典型的 Unix 系统上,它将在目录/usr/lib/pkgconfig
和中进行搜索/usr/share/pkgconfig
。这通常会涵盖系统安装的模块。但是,某些本地模块可能安装在不同的前缀中,例如/usr/local
。在这种情况下,有必要在搜索路径前面加上前缀,以便 pkg-config 可以找到 .pc 文件。
该pkg-config
程序用于检索系统中已安装库的信息。其主要用途pkg-config
是提供编译和链接程序到库所需的详细信息。此元数据存储在 pkg-config 文件中。这些文件的后缀为 .pc,位于 pkg-config 工具已知的特定位置。
要检查该PKG_CONFIG_PATH
值,请使用以下命令:
echo $PKG_CONFIG_PATH
要设置PKG_CONFIG_PATH
值,请使用:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
或者
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
答案2
要查看 pkg-config(版本 0.24 或更高版本)默认搜索已安装库的位置,请使用以下命令:
pkg-config --variable pc_path pkg-config
要添加到该路径,请设置PKG_CONFIG_PATH
环境变量。 man 文件指出PKG_CONFIG_PATH
:
用冒号分隔的(在 Windows 上用分号分隔)用于搜索 .pc 文件的目录列表。搜索路径后将始终搜索默认目录;默认目录为 libdir/pkgconfig:datadir/pkgconfig,其中 libdir 是 pkg-config 所在的 libdir,datadir 是安装 pkg-config 所在的 datadir。
答案3
第一个答案在技术上不够明确。从手册页(打开终端,输入man pkg-config
):
pkg-config
从特殊元数据文件中检索有关软件包的信息。这些文件以软件包命名,并具有扩展名。.pc
在大多数系统上,pkg-config
会在/usr/lib/pkgconfig
、和中查找这些文件。它还会在环境变量指定的冒号分隔(在 Windows 上为分号分隔)目录列表中查找。/usr/share/pkgconfig
/usr/local/lib/pkgconfig
/usr/local/share/pkgconfig
PKG_CONFIG_PATH
因此该pkg-config
程序不在PKG_CONFIG_PATH
目录中;但是,如果您安装了一个库,为了使脚本中使用它的信息automake
可访问,它需要位于pkg-config
可知的目录中。
答案4
我查看了我的 64 位系统上的手册页,但有点困惑。它有一行内容:
pkg-config 从特殊元数据文件中检索有关软件包的信息。这些文件以软件包命名,扩展名为 .pc。默认情况下,pkg-config 在目录 prefix/lib/pkgconfig 中查找这些文件;它还将在 PKG_CONFIG_PATH 环境变量指定的冒号分隔(在 Windows 上为分号分隔)目录列表中查找。
我以为它总是在目录 lib/pkgconfig 中查找。结果发现它就是目录本身。就我而言,我试图编译 hello world gtk 教程。我找到我想要的文件,例如
locate gtk | grep '\.pc'
调查结果如下:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
最后就是做出口。
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/