pkg-config提供了下面几个功能:
这一切都自动的,库文件安装在哪里都没关系!
为了让pkg-config可以得到这些信息,要求库的提供者,提供一个.pc文件。比如libffi-3.4.2的pc文件内容如下:
zys@zys-virtual-machine:~/work/tool/libffi-3.4.2/ffi-arm-install/lib/pkgconfig$ cat libffi-arm.pc
prefix=/home/zys/work/tool/libffi-3.4.2/ffi-arm-install
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
toolexeclibdir=${libdir}/../lib
includedir=${prefix}/include
Name: libffi
Description: Library supporting Foreign Function Interfaces
Version: 3.4.2
Libs: -L${toolexeclibdir} -lffi
Cflags: -I${includedir}
这个文件一般放在 /usr/lib/pkgconfig/ 或者 /usr/local/lib/pkgconfig/ 里,当然也可以放在其它任何地方。
为了让pkgconfig可以找到你的pc文件,你要把pc文件所在的路径,设置在环境变量 PKG_CONFIG_PATH
里。
使用 pkg-config 的 –cflags 参数可以给出在编译时所需要的选项,而 –libs 参数可以给出连接时的选项。例如,假设一个 sample.c 的程序用到了 Glib 库,就可以这样编译:
–cflags 可以给出编译时需要的选项
–libs 可以给出链接时的选项
$ gcc sample.c -o sample `pkg-config --cflags --libs glib-2.0`