pkg-config的简单应用

时间:2022-01-20 18:52:37

pkg-config的简单用法
在Linux下面编译、链接程序一般会用到pkg-config这个命令,那么它究竟是干什么的呢?
pkg-config是一个返回我们已经安装库的信息的工具,比如库的头文件在哪里,链接它又需要到哪里等等信息。
其语法如下:
pkg-config [options] library
最常用的选项有以下几个:
(1)--cflags
cflags 即compile flags(这个是我猜的呵呵),就是说编译的选项,包括预处理和编译两步的flags,也就是说加上这个选项会打印出预处理和编译这个library需要的所有依赖,主要包括宏和头文件
(2)--libs
--libs即linked librarys,这个跟--cflags基本上一样,不过输出的结果是该library需要链接库的信息(当然也是库了)
(3)--print-errors
这个就不多说了,就是当pkg-config执行失败后返回的信息
下面,我以gtk库为例演示一下这些选项
$pkg-config --cflags gtk+-2.0
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12
$pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0
$gtk-config --cflags --libs gtk+-2.0
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0
其中第三种是最常用的方法,我们比较以上三条命令的输出,也不难看出各个选项的作用。