pkg config用法詳解

2021-08-13 15:31:30 字數 1927 閱讀 1788

我們在用第三方庫的時候,經常會用到pkg-config這個東西來編譯程式。那pkg-config究竟是什麼呢?本博文簡單地說一下。

對於乙個比較大第三方庫,其標頭檔案和庫檔案的數量是比較多的。如果我們乙個個手動地寫,那將是相當麻煩的。所以,pkg-config就應運而生了。pkg-config能夠把這些標頭檔案和庫檔案的位置指出來,給編譯器使用。如果你的系統裝有gtk,可以嘗試一下下面的命令$pkg-config --cflags gtk+-2.0

。可以看到其輸出是gtk的標頭檔案的路徑。

我們平常都是這樣用pkg-config的。$gcc main.c `pkg-config --cflags --libs gtk+-2.0` -o main

上面的編譯命令中,`pkg-config --cflags --libs gtk+-2.0`的作用就如前面所說的,把gtk的標頭檔案路徑和庫檔案列出來,讓編譯去獲取。--cflags

和--libs

分別指定標頭檔案和庫檔案。

ps:命令中的`不是引號,而是數字1左邊那個鍵位的那個符號。

其實,pkg-config同其他命令一樣,有很多選項,不過我們一般只會用到--libs和--cflags選項。更多的選項可以在這裡檢視。

看到這裡,大家可能想試一下將pkg-config用於自己的庫。下面就說一下,怎麼寫。

首先要明確一點,因為pkg-config也只是乙個命令,所以不是你安裝了乙個第三方的庫,pkg-config就能知道第三方庫的標頭檔案和庫檔案所在的位置。pkg-config命令是通過查詢***.pc檔案而知道這些的。我們所需要做的是,寫乙個屬於自己的庫的.pc檔案。

但pkg-config又是如何找到所需的.pc檔案呢?這就需要用到乙個環境變數pkg_config_path了。這環境變數寫明.pc檔案的路徑,pkg-config命令會讀取這個環境變數的內容,這樣就知道pc檔案了。

對於ubuntu系統,可以用root許可權開啟/etc/bash.bashrc檔案。在最後輸入下面的內容。

這樣,pkg-config就會去/usr/local/lib/pkgconfig目錄下,尋找.pc檔案了。如果不是ubuntu系統,那就沒有/etc/bash.bashrc檔案,可以參考我的一篇博文,來找到乙個合適的檔案,修改這個環境變數。輸入bash命令使得配置生效。

現在pkg-config能找到我們的.pc檔案。但如果有多個.pc檔案,那麼pkg-config又怎麼能正確找到我想要的那個呢?這就需要我們在使用pkg-config命令的時候去指定。比如$gcc main.c `pkg-config --cflags --libs gtk+-2.0` -o main就指定了要查詢的.pc檔案是gtk+-2.0.pc。又比如,有第三方庫opencv,而且其對應的pc檔案為opencv.pc,那麼我們在使用的時候,就要這樣寫`pkg-config --cflags --libs opencv`。這樣,pkg-config才會去找opencv.pc檔案。

好了,現在我們開始寫自己的.pc檔案。只需寫5個內容即可:name、description、version、cflags、libs。

比如簡單的:

[cpp]view plain

copy

name: opencv  

description:opencv pc file  

version: 2.4  

cflags:-i/usr/local/include  

libs:-l/usr/local/lib –l*** –l***  

其中name對應的內容要和這個pc檔案的檔名一致。當然為了書寫方便還會加入一些變數,比如字首變數prefix。下面有乙個更完整的pc檔案的內容

其中,cflags和libs的寫法,是使用了-i -l -l這些gcc的編譯選項。原理可以參考我的一篇博文。

pkg config工具在實際工程中的用法

1 pkg config工具的作用 pkg config簡單的說就是向使用者提供相應庫的路徑,版本號,標頭檔案路徑等資訊的綜合呼叫程式。筆者使用的是ubuntu系統,我們以openexr庫為例看看pkg config執行的結果,在shell命令列輸入 顯示資訊為 i usr include open...

pkg config 編譯安裝

由於大部分的開源工程都需要用到pkg config,因此今天在這講解一下pkg config for mac 安裝過程.1.檢測環境是否已安裝pkg config 再命令列中輸入 pkg config 若未安裝,則提示命令未找到.2.安裝pkg config pkg config 0.28.tar....

pkg config 學習筆記

術語對照表 引數 option 選項 flag 在編譯和鏈結時,提供必要的庫檔案細節。元資料儲存在 pkg config 檔案裡面,檔案字尾.pc,檔案需要存放在 pkg config 工具能夠找到的特定位置。prefix usr local exec prefix includedir inclu...