Ubuntu 16.04 下pkg-config的安装与简介

Ubuntu 16.04 下pkg-config的安装与简介
原创 BRUCE_WUANG 最后发布于2019-08-19 11:33:06 阅读数 2957 收藏
展开
1. 什么是pkg-config

简单的说就是向用户向程序提供相应库的路径、版本号等信息的程序

譬如说我们运行以下命令


pkg-config  查看gcc的CFLAGS参数
pkg-config --libs --cflags opencv

 

显示

-I/usr/include/opencv -lcxcore -lcv -lhighgui -lcvaux

 

1.1 这不就是我们用gcc编译连接时CFLAGS的参数吗?

因此当我们需要编译连接某个库时,我们只需要把上面那行加入gcc 的参数里面即可

这也是configure的作用:它会检查你需要的包,产生相应的信息。
1.2 那pkg-config从哪儿知道这些信息的呢?

它是从包名为xxx.pc这个文件中查找到的。
拿上面那个例子说,它是从opencv.pc这个文件中查知的。
那pkg-config 又怎么会知道opencv.pc这个文件呢?
1.3 pkg-config是怎样工作的?

缺省情况下,pkg-config首 先在prefix/lib/pkgconfig/中查找相关包(譬如opencv)对应的相应的文件(opencv.pc)

在linux上上述路径名为 /usr/lib/pkconfig/
若是没有找到,它也会到PKG_CONFIG_PATH这个环境变量所指定的路径下去找。
若是没有找到,它就会报 错,例如:


Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

 

设置环境变量PKG_CONFIG_PATH方法举例如下:
export PKG_CONFIG_PATH=/cv/lib:$PKG_CONFIG_PATH
1.4 查看一个.pc文件的内容:

[root@yx pkgconfig]# cat glib-2.0.pc
prefix=/usr
exec_prefix=/usr
libdir=/lib
includedir=/usr/include
configexecincludedir=/usr/lib/glib-2.0/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.12.3
Libs: -L${libdir} -lglib-2.0  
Cflags: -I${includedir}/glib-2.0 -I${configexecincludedir}

[root@yx pkgconfig]# pwd
/usr/lib/pkgconfig

 

可见.pc文件 是对其的库文件路径,头文件路径,版本号,Cflags等一些参数进行封装。

上面部分来源于:http://www.cppblog.com/colorful/archive/2012/05/05/173750.html

你可能感兴趣的:(linux)