打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
pkg
1 pkg-config介绍
pkg-config用来检索系统中安装库文件的信息。典型的是用作库的编译和连接。如在Makefile中:
program: program.c
cc program.c `pkg-config --cflags --libs gnomeui`
pkg-config --list-all    可以列出所有可使用的包。
pkg-config要求库提供一个.pc元数据文件,从这些文件中检索库的各种必要信息,包括版本信息,编译和连接需要的参数等。这些信息可以通过pkg-config提供的参数(如--cflags, --libs)单独提取出来直接供编译器和连接器使用。
默认情况下,每个支持pkg-config的库对应的.pc文件,在安装后,都位于目录/usr/lib/pkgconfig目录下。
环境变量PKG_CONFIG_PATH是用来设置.pc文件的搜索路径的,pkg-config按照设置路径的先后顺序进行搜索。这样,库的头文件的搜索路径的设置实际上就变成了对.pc文件搜索路径的设置。
2 pkg-config功能
一般来说,即使是使用同一个库,不同的用户在安装时也可能会安装在不同的目录下。这样在编译时使用-I参数指定include路径,在连接时使用-L参数指定lib库的路径,可能造成了编译,连接的不一致,同一份程序从一台机器copy到另一台机器时就可能会出现问题。
pkg-config就是用来解决编译连接界面不统一问题的一个工具。
它的基本思想:事先把库的各种必要信息保存在.pc文件中,需要的时候可以使用参数(--cflags,--libs),将所需信息提取出来供编译和连接使用。这样,不管库文件安装在哪,通过库对应的.pc文件就可以准确定位,可以使用相同的编译和连接命令,使得编译和连接界面统一。
它提供的主要功能有:
<1> 检查库的版本号。如果所需库的版本不满足要求,打印出错误信息,避免连接错误版本的库文件。
<2> 获得编译预处理参数,如宏定义,头文件的路径。
<3> 获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数。
<4> 自动加入所依赖的其他库的设置。
3 gtk+-2.0的.pc文件内容举例
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
target=x11
gtk_binary_version=2.4.0
gtk_host=i386-redhat-linux-gnu
Name: GTK+
Description: GIMP Tool Kit (${target} target)
Version: 2.6.7
Requires: gdk-${target}-2.0 atk
Libs: -L${libdir} -lgtk-${target}-2.0
Cflags: -I${includedir}/gtk-2.0
如果要使用gtk+的库编译一个程序,可以如下:
$gcc -c program.c -o program `pkg-config "gtk+-2.0>2.0.0" --cflags --libs`
其中,--cflags参数提取出编译所需的选项,--libs参数提取出连接时的选项。上面一步也可以分成两步如下:
$gcc -c program.c `pkg-config --cflags "gtk+-2.0>2.0.0"`
$gcc -o program program.o `pkg-config --libs "gtk+-2.0>2.0.0"`
4 环境变量PKG_CONFIG_PATH
在安装完一个需要使用的库后,比如Glib,一是将相应的.pc文件,如glib-2.0.pc拷贝到/usr/lib/pkgconfig目录下,二是通过设置环境变量PKG_CONFIG_PATH添加glib-2.0.pc文件的搜索路径。
尤其是不完全使用新安装的库取代旧库的时候,使用环境变量可能是更好的选择,因为环境窗口的设置只对当前终端窗口有效。
使用环境变量的方法,只需修改PKG_CONFIG_PATH和LD_LIBRARY_PATH变量。LD_LIBRARY_PATH变量主要是添加新安装库的搜索路径。
如新的Glib库安装在/usr/local/glib-2.0/lib下,可以编辑文件set_glib-2.0:
export PKG_CONFIG_PATH=/usr/local/lib/glib-2.0/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/usr/local/lib/glib-2.0/lib:$LD_LIBRARY_PATH
每次使用时,source下就行了:
$source set_glib-2.0
5 其他的config
$ls /usr/bin/*config
参考:
1. ld.so.conf 文件与PKG_CONFIG_PATH变量,http://www.91linux.com/html/article/program/cpp/20071207/8934.html
2. Makefile好助手:pkgconfig,http://blog.mcuol.com/User/AT91RM9200/Article/7457_1.htm
3. pkg-config使用,http://blog.chinaunix.net/u/12467/showart_246860.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux里命令pkg-config工具的使用  - linux - LINUX系统维护与...
在 Linux 系统上源码安装 GTK+ 2.0(转)
怎样编译和配置GStreamer?
tarball编译遇到的问题及解决的方法
GTK安装
总结configure,pkg-config和PKG_CONFIG_PATH
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服