当前位置: 首页>>技术教程>>正文


PKG_CONFIG_PATH环境变量

,

问题描述

如果您在non-standard前缀中安装了软件,请考虑调整PKG_CONFIG_PATH环境变量。这是什么意思 ?

最佳解决方法

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

次佳解决方法

第一个答案在技术上不够明确。从手册页(打开终端,键入man pkg-config):

pkg-config retrieves information about packages from special metadata files. These files are named after the package, and has a .pc extension. On most systems, pkg-config looks in /usr/lib/pkgconfig, /usr/share/pkgconfig, /usr/local/lib/pkgconfig and /usr/local/share/pkgconfig for these files. It will additionally look in the colon-separated (on Windows, semicolon-separated) list of directories specified by the PKG_CONFIG_PATH environment variable.

所以pkg-config程序不在PKG_CONFIG_PATH目录中;但是,如果您安装了库,要在automake脚本中使用它的信息是可访问的,它需要位于pkg-config知道的目录中。

第三种解决方法

要查看默认情况下pkg-config(版本0.24或更高版本)搜索已安装库的位置,请使用以下命令:

pkg-config --variable pc_path pkg-config

要修改该路径,请设置PKG_CONFIG_PATH环境变量。 man文件声明PKG_CONFIG_PATH是:

A colon-separated (on Windows, semicolon-separated) list of directories to search for .pc files. The default directory will always be searched after searching the path; the default is libdir/pkgconfig:datadir/pkgconfig where libdir is the libdir where pkg-config and datadir is the datadir where pkg-config was installed.

第四种方法

你正试图建立一个软件,比如说Widget。为了参数,Widget依赖于另一个库libcog。 Widget的构建过程(可能是配置脚本)正在使用pkg-config来确定如何使用libcog。 pkg-config对libcog一无所知。

如果没有安装libcog,那就是你的问题。标准安装libcog很有可能解决问题。根据您的系统,您可能需要安装附加的”developer”版本的软件包;它最后经常有”-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/

一旦完成,re-running失败的命令将有希望工作。

如果安装了libcog,包括库和头文件,并且你没有libcog.pc文件,那么事情就会变得很糟糕。据推测,libcog的标准安装包括信息,否则Widget不会依赖它。我首先调查重新安装libcog。可以手动创建libcog.pc文件,但正确使用它对于给定的库来说很困难且非常具体。

第五种方法

我在64位系统上查看了man-page并且有点困惑。它在一行中说:

pkg-config retrieves information about packages from special metadata files. These files are named after the package, with the extension .pc. By default, pkg-config looks in the direc‐ tory prefix/lib/pkgconfig for these files; it will also look in the colon-separated (on Windows, semicolon-separated) list of directories specified by the PKG_CONFIG_PATH environment vari‐ able.

我曾经假设它在目录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/

第六种方法

在我看来,大多数答案都有太多的信息而不是需要。

一个安装的软件可能(通常是)依赖于某些库和/或标头,系统使用pkg-config来查找它们。

这么说,pkg-config在pre-defined(默认)系统的目录中查找这些文件。这些文件夹是”prefix”。例如。具有前缀/usr/local的库预计在/usr/local/include中具有标题,并且库本身将在/usr/local/lib中。但是,pkg-config也会在环境变量PKG_CONFIG_PATH中列出的目录中查找库。

然后,如果你在”adjust”列表的默认文件夹之外安装软件,即将你的目录添加到PKG_CONFIG_PATH

$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>

有关详细信息,请查看herehere

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1513.html,未经允许,请勿转载。