pkg-config

   可使用pkg-config获取的库须要有一个条件,那就是要求库的提供者,提供一个.pc文件。好比gtk+-2.0的pc文件内容以下:linux

prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
target=x11工具

gtk_binary_version=2.4.0
gtk_host=i386-redhat-linux-gnuui

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.0ip

  这个文件通常放在 /usr/lib/pkgconfig/ 或者 /usr/local/lib/pkgconfig/ 里,固然也能够放在其它任何地方,如像 X11 相关的pc文件是放在 /usr/X11R6/lib/pkgconfig 下的。为了让pkgconfig能够找到你的pc文件,你要把pc文件所在的路径,设置在环境变量 PKG_CONFIG_PATH 里。get

  使用 pkg-config 的 –cflags 参数能够给出在编译时所须要的选项,而 –libs 参数能够给出链接时的选项。例如,假设一个 sample.c 的程序用到了 Glib 库,就能够这样编译:it

$ gcc -c `pkg-config –cflags glib-2.0` sample.cio

  而后这样链接:编译

$ gcc sample.o -o sample `pkg-config –libs glib-2.0`变量

  或者上面两步也能够合并为如下一步:gcc

$ gcc sample.c -o sample `pkg-config –cflags –libs glib-2.0`

  能够看到:因为使用了 pkg-config 工具来得到库的选项,因此不论库安装在什么目录下,均可以使用相同的编译和链接命令,带来了编译和链接界面的统一。

  使用 pkg-config 工具提取库的编译和链接参数有两个基本的前提:

    • 库自己在安装的时候必须提供一个相应的 .pc 文件(不这样作的库说明不支持 pkg-config 工具的使用)。
    • pkg-config 必须知道要到哪里去寻找此 .pc 文件。

 

  库文件在链接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。通常 Linux 系统把 /lib 和 /usr/lib 两个目录做为默认的库搜索路径,因此使用这两个目录中的库时不须要进行设置搜索路径便可直接使用。对于处于默认库搜索路径以外的库,须要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:

  1. 在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。
  2. 在  /etc/ld.so.conf  文件中添加库的搜索路径。

 

 

 

 

参考:

     [1]. 理解 pkg-config 工具: http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/

本站公众号
   欢迎关注本站公众号,获取更多信息