可使用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-gnuuiName: 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 工具提取庫的編譯和鏈接參數有兩個基本的前提:
庫文件在鏈接(靜態庫和共享庫)和運行(僅限於使用共享庫的程序)時被使用,其搜索路徑是在系統中進行設置的。通常 Linux 系統把 /lib 和 /usr/lib 兩個目錄做爲默認的庫搜索路徑,因此使用這兩個目錄中的庫時不須要進行設置搜索路徑便可直接使用。對於處於默認庫搜索路徑以外的庫,須要將庫的位置添加到庫的搜索路徑之中。設置庫文件的搜索路徑有下列兩種方式,可任選其一使用:
[1]. 理解 pkg-config 工具: http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/