Ant-Veil

Caspar Blog

Pkg-config 命令学习

| Comments

接着凌晨的文章说。

昨天说自己被 Ubuntu 养懒了,确实懒了,懒得自己连系统的某些工具的用处都不知道。比如 pkg-config

以前一直不知道,Linux 下那么多库,在./configure 时时怎么判断它们存不存在的,难道是靠递归搜索?现在我才知道我 zt 了,pkg-config 这个命令和/*/lib/pkgconfig 下的一些.pc 文件才是主角。

每个.pc 文件定义了库的名字、路径、编译选项等,比如 glib-2.0.pc 文件:

prefix=/usr
exec_prefix=${prefix}
libdir=/usr/lib
includedir=${prefix}/include

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

Name: Glib
Description: C Utilitiy Library
Version: 2.14.4
Libs: -L${libdir} -lglib-2.0
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include

configure 到某个时刻的时候,pkg-config 命令会首先去 PKG_CONFIG_PATH 定义好的路径下搜索库名字对应的.pc 文件,找到了就行了,等会儿 make 的时候就可以通过正则表达式取出 libs 和 cflags 的值来使用,否则的话就报错。

刚才 pkg-config 提示没有 libgnomeui-2.0 的库,我找了一下,找到了这个.pc 文件呀,但是 pkg-config 就是说找不到。我脑子抽筋了那么几分钟,终于意识到,在~/.bashrc 中,添加 libgnomeui-2.0 所在的文件夹路径到 PKG_CONFIG_PATH 下:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

然后 source ~/.bashrc 就可以了。

顺便说一句,编译真是个惊心动魄的过程啊,不亚于看恐怖小说。

凌晨的时候系统坏了,现在重装好,配置好,恢复到了凌晨的状态了,sigh - b

Comments