pkg-config 是一個在源代碼編譯時查詢已安裝的的使用接口的計算機工具軟件。pkg-config 原本是設計用於 Linux 的,但現在在各個版本的 BSDwindowsMac OS XSolaris 上都有着可用的版本。

它輸出已安裝的庫的相關信息,包括:

工作原理

編輯

當安裝一個庫時(例如從 RPMdeb 或其他二進制包管理系統),會包括一個後綴名為 pc 的文件,該文件會被放入某個文件夾下(取決於你的系統設置)。例如,在 Linux 為該軟件的庫文件所在文件夾 lib 之下的子文件夾 pkgconfig。並把該子文件夾加入 pkg-config 的環境變量 PKG_CONFIG_PATH 作為搜索路徑,例如在 bash 配置文件中加入一行:

export PKG_CONFIG_PATH=/usr/local/`库的名字`/lib/pkgconfig:$PKG_CONFIG_PATH

在這個 .pc 文件里包含有數個條目。這些條目通常包含用於其他使用這個庫的程序編譯時需要的庫設置,以及頭文件的位置,版本信息和一個簡介。

這是一個用於 libpng.pc 文件的樣例:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${exec_prefix}/include
 
Name: libpng
Description: Loads and saves PNG files
Version: 1.2.8
Libs: -L${libdir} -lpng12 -lz
Cflags: -I${includedir}/libpng12

這個文件告訴我們這些庫可以在 /usr/local/lib 找到,頭文件可以在 /usr/local/include 里找到,庫的名字是 libpng12 並且版本號是 1.2.8。它也提供了用於編譯依賴於 libpng 的源代碼時需要的鏈接器參數。

這是一個編譯時使用 pkg-config 的樣例:

gcc -o test test.c $(pkg-config --libs --cflags libpng)