dev*_*av2 102
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
Run Code Online (Sandbox Code Playgroud)
要设置PKG_CONFIG_PATH值使用:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)
或者
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)
Gra*_*ral 52
要查看默认情况下 pkg-config(版本 0.24 或更高版本)在何处搜索已安装的库,请使用以下命令:
pkg-config --variable pc_path pkg-config
Run Code Online (Sandbox Code Playgroud)
要添加到该路径,请设置PKG_CONFIG_PATH环境变量。man 文件指出PKG_CONFIG_PATH:
用于搜索 .pc 文件的以冒号分隔(在 Windows 上,以分号分隔)的目录列表。搜索路径后将始终搜索默认目录;默认是 libdir/pkgconfig:datadir/pkgconfig 其中 libdir 是 libdir,其中 pkg-config 和 datadir 是安装 pkg-config 的 datadir。
小智 41
第一个答案在技术上不够明确。从手册页(打开终端,输入man pkg-config):
pkg-config从特殊元数据文件中检索有关包的信息。这些文件以包命名,并具有.pc扩展名。在大多数系统中,pkg-config看起来/usr/lib/pkgconfig,/usr/share/pkgconfig,/usr/local/lib/pkgconfig并且/usr/local/share/pkgconfig这些文件。它还将查看由PKG_CONFIG_PATH环境变量指定的以冒号分隔的(在 Windows 上,以分号分隔的)目录列表。
所以pkg-config程序不在PKG_CONFIG_PATH目录中;然而,如果你安装了一个库,为了在automake脚本中使用它的信息可以访问,它需要在一个目录中pkg-config是已知的。
Ala*_*met 10
您正在尝试构建一个软件,比如说 Widget。为了论证,Widget 依赖于另一个库 libcog。Widget 的构建过程(可能是配置脚本)是使用 pkg-config 来确定如何使用 libcog。pkg-config 对 libcog 一无所知。
如果未安装 libcog,那就是您的问题。标准安装的 libcog 很有可能解决这个问题。根据您的系统,您可能需要安装额外的“开发者”版本的软件包;它通常以“-devel”或“-dev”结尾,因此如果您安装“libcog”,您可能还需要安装“libcog-devel”。
如果安装了 libcog,它可能没有以 pkg-config 可以找到的方式安装。您的系统上可能有一个 libcog.pc 文件。为了便于论证,它位于 /opt/cog/lib/pkgconfig/libcog.pc。在这种情况下,您可以通过将 PKG_CONFIG_PATH 设置为保存 libcog.pc 的目录来告诉 pkg-config。所以在 Bourne shell 或类似的东西中,像
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
Run Code Online (Sandbox Code Playgroud)
完成后,重新运行失败的命令有望成功。
如果安装了 libcog(包括库和头文件),而您没有 libcog.pc 文件,则情况会很糟糕。据推测,libcog 的标准安装包含该信息,否则 Widget 不会依赖它。我首先调查重新安装 libcog。可以手动创建 libcog.pc 文件,但正确创建它是困难的,并且高度特定于给定的库。
小智 9
我查看了 64 位系统上的手册页,有点困惑。它在一行中说:
pkg-config 从特殊元数据文件中检索有关包的信息。这些文件以包命名,扩展名为 .pc。默认情况下, pkg-config 在目录中查找?这些文件的前缀/lib/pkgconfig;它还将查看由 PKG_CONFIG_PATH 环境变量指定的以冒号分隔(在 Windows 上,以分号分隔)的目录列表?有能力的。
我原以为它总是在目录 lib/pkgconfig 中查找。原来它的目录本身。就我而言,我试图编译 hello world gtk 教程。我找到了我想要的文件,例如
locate gtk | grep '\.pc'
Run Code Online (Sandbox Code Playgroud)
结果包括:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
最后是做一个出口。
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
Run Code Online (Sandbox Code Playgroud)
在我看来,大多数答案的信息都超出了所需。
安装的软件可能(并且通常确实)依赖于一些库和/或头文件,系统使用 pkg-config 来查找它们。
就是说,pkg-config在预定义(默认)系统目录中查找此文件。这些文件夹是“前缀”。例如,有前缀的库/usr/local预计将有页眉/usr/local/include和库本身会在/usr/local/lib。
然而,pkg-config也在环境变量PKG_CONFIG_PATH 中列出的目录中查找库。
然后,如果您在默认文件夹列表之外安装软件,则必须“调整”列表,即将目录添加到 PKG_CONFIG_PATH
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
426629 次 |
| 最近记录: |