pkg-config 使用及建立方法

1. pkg-config --list-all
列出所有可使用的連結庫,位置在 /usr/lib/pkgconfig 及 /usr/local/lib/pkgconfig 裡面的 xxx.pc 檔,新軟體一般都會安裝 .pc 檔,沒有可以自己建立,並且設定環境變數 PKG_CONFIG_PATH 供 pkg-config 尋找 .pc 檔路徑。

2. pkg-config --cflags xxxx
取得該連結庫的 CFLAGS 參數。(Cflags)

3. pkg-config --libs xxxx
取得該連結庫的 LDFLAGS 參數。(Libs)

4. pkg-config --static xxxx
取得該連結庫供靜態連結的 LDFLAGS 參數。(Libs.private)

5. pkg-config --exists xxx
假如連結庫存在則傳回 0。

6. pkg-config --version
取得 pkg-config 版本號。

7. pkg-config --atleast-pkgconfig-version=VERSION
假如 pkg-config 版本號大於等於 VERSION 則傳回 0。

8. pkg-config --errors-to-stdout
輸出 --print-errors 的錯誤訊息到 stdout 而非 stderr,需搭配 --print-errors 使用。

9. pkg-config --print-errors xxxx
假如連結庫不存在或有問題,則輸出相關錯誤訊息。(好像不太對??)

10. pkg-config --print-requires xxxx
取得連結庫所需的相關連結庫。(Requires)

11. pkg-config --modversion xxxxx
取得連結庫的版本號。(Version)

12. pkg-config --variable=VARIABLENAME xxxx
取得連結庫 .pc 檔案內的變數值。(prefix,exec_prefix,libdir,includedir)

13. .pc 檔案製作
# blkid pkg-config 
# 註解
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
#上面四個都是變數,視情況可自行增加

Name: blkid
Description: Block device id library
Version: 1.39
Requires: uuid devmapper
Cflags: -I${includedir} 
Libs: -L${libdir} -lblkid -ldevmapper

Name: 連結庫名稱
Description: 連結庫描述
URL: 連結庫的來源網站
Version: 連結庫版本
Requires: 連結庫相依連結庫名稱
Conflicts: 連結庫相依連結庫版本限制
Libs: 連結庫編譯所需的 LDFLAGS 參數
Libs.private: 連結庫編譯所需的 LDFLAGS 參數,給靜態庫用的。
Cflags: 連結庫編譯所需的 CFLAGS 參數


书籍推荐