PKG_CONFIG_PATH 的使用

来源:互联网 发布:淘宝详情页图片超链接 编辑:程序博客网 时间:2024/05/16 06:26

在Fedora 14安装软件的时候遇到一个奇怪的问题。

所要安装的软件依赖glib库 2.20。 而系统自带的是2.18不满足条件。于是我安装了一个glib-2.25。但是安装完成之后查询库的版本依然是2.18.

这样就要提几个问题:

1. 系统是如何知道库的版本的?

一般来说,一个库在安装的过程中(如果是自编译的在configure阶段)会生成一个.pc文件,里面包含了库的相关信息

下面是vte库生成的.pc文件中的内容。其版本为0.27.2. 系统就是通过解析这个文件的内容来获取库的信息的。(系统并不是完全详细里面的内容,如果.pc文件里的版本信息,和实际的库不一致,系统会提示)

prefix=/usr/local

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

 

defaultemulation=xterm

 

Name: vte

Description: Vte terminal widget.

Version: 0.27.2

Requires: glib-2.0 >= 2.22.0 gobject-2.0 pango >= 1.22.0 gtk+-2.0 >= 2.20.0 gobject-2.0 gio-2.0 gio-unix-2.0 x11 cairo-xlib

Libs: -L${libdir} -lvte

Cflags: -I${includedir}/vte-0.0 

 

2.这个文件在什么地方。

这个文件在安装库的时候会自动被拷贝到pkgconfig文件夹下。

对于系统默认安装的库路径为:/usr/lib/pkgconfig

对于用户自安装的库路径为:/usr/local/lib/pkgconfig

 

3.为什么系统看不到新版本的库?

系统默认情况下会到/usr/lib/pkgconfig中去查找库的信息。对于/usr/local/lib/pkgconfig是无视的。

这个时候就要设置环境变量PKG_CONFIG_PATH。这样系统会优先到PKG_CONFIG_PATH中列的路径中去搜索库的信息文件。

 

 

对于文章前面描述的问题只要将PKG_CONFIG_PATH设置为/usr/local/lib/pkgconfig 就可以解决问题了。

PS: 此外,还有一个环境变量LD_LIBRARY_PATH要相应设置为/usr/local/lib否则系统会发现.pc文件描述的内容与时间的库信息不一致而报错。

原创粉丝点击