分类: LINUX
2008-04-18 11:29:28
个人理解: 为已经安装的包提供了include,以及实际库安装的位置编译选项的输出和管理。 当你需要使用某些包的时候,有可能需要自己输入包含头文件的路径以及库的位置。因为有些库以及它的头文件不一定是安装在系统默认存放库和头文件的地方。 通过对pkg-config指示不同参数以及库的名字,它为gcc提供了你所使用库的编译选项 例如,当我输入 johnman@johnman-desktop:/$ pkg-config --cflags glib-2.0 的时候 输出 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 这个看起来像gcc头文件路径指示的选项 所有的库都可以通过pkg-config来统一管理,这些都是通过配置文件来存放信息的。这些配置文件后缀名为.pc,我的系统这些文件存放在:/usr/lib/pkgconfig/目录下面 查看该目录下的glib-2.0.pc 文件内容如下: ######################## prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include glib_genmarshal=glib-genmarshal gobject_query=gobject-query glib_mkenums=glib-mkenums Name: GLib Description: C Utility Library Version: 2.12.11 Libs: -L${libdir} -lglib-2.0 Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include ######################## 猜想pkg-config的Cflags选项就是输出最后一行 -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include 补遗: 在网上搜了一下PKG_CONFIG_PATH参数的作用。 当编译或者config的时候,可能会提示找不到某个包,例如可能明明已经安装glib-2.0,但是还是提示找不到。一般来说,原因可能在于安装的包没有装在/usr/lib下面,所以默认找不到。 如果出错信息提示可以通过修改PKG_CONFIG_PATH环境变量来解决。 可以通过这样解决:当安装的包(例如glib-2.0)的时候,也会在系统中添加了相应的.pc文件(例如lib-2.0.pc),但是可能这个.pc文件不在pkg-config的默认的搜索路径下面。这时可以修改PKG_CONFIG_PATH环境变量来把.pc文件的路径添加进去,这样应该就可以解决了。 后记:总算是大概弄明白了,革命尝未成功,菜鸟仍需努力 |