Linux中的configure、pkg-config、pkg_config_path
提到這三個名詞我相信搞Linux的人一定不會陌生,重要性不言而喻,下面我就要總結下三者之間的關系。
configure一般都是一個腳本,執行時可以傳入必要的參數告知配置項目。一般的開源軟件,下載完源代碼,解壓後都會在解壓後目錄中找到configure文件,執行./configure文件就會生成Makefile文件,而configure腳本在檢查相應環境時會通過pkg-config的工具來檢測相應依賴環境。
pkg-config這一工具是用來檢索系統中安裝庫文件的信息。其主要功能如下:
1、檢查庫的版本號。如果所需要的庫的版本不滿足要求,它會打印出錯誤信息
,避免鏈接錯誤版本的庫文件。
2、獲得編譯預處理參數,如宏定義,頭文件的位置。
3、獲得鏈接參數,如庫及依賴的其它庫的位置,文件名及其它一些連接參數。
4、自動加入所依賴的其它庫的設置。
由於使用pkg-config工具來獲得庫的選項,所以不論庫安裝在什麼目錄下,都可以使用相同的編譯和連接命令,帶來了編譯和連接界面的統一。但使用pkg-config工具提取庫的編譯和連接參數有兩個基本的前提:
1、庫本身在安裝的時候必須提供一個相應的.pc文件,如果沒有.pc文件的軟件則一般是不支持pkg-config工具的使用的。 www.2cto.com
2、pkg-config必須知道要到哪裡去尋找此.pc文件
pkg_config_path:環境變量PKG_CONFIG_PATH是用來設置.pc文件的搜索路徑的,pkg-config按照設置路徑的先後順序進行搜索,直到找到指定的.pc 文件為止。這樣,庫的頭文件的搜索路徑的設置實際上就變成了對.pc文件搜索路徑的設置。
下面就針對一個具體的情況來說明問題:在很多人編譯GTK程序時都會出現說gtk.h文件找不到,之所以會出現這種問題就歸咎於環境變量沒有配置,我們通過上面的敘述,首先我們要做的就是找到其對應的.pc文件,在終端中輸入pkg-config --modversion gtk+-2.0,提示找不到xproto.pc文件,需要把包含該文件的目錄放到PKG_CONFIG_PATH裡,搜索了一下,該文件在/usr/share/pkgconfig下,那麼我們就改環境變量喽:export PKG_CONFIG=/usr/local/bin/pkg-config
export PKG_CONFIG_PATH=/usr/share/pkgconfig:/usr/lib/pkgconfig,好了,這樣一切都OK了,
在我們編譯對應程序時,輸入的命令為gcc Demo.c -o Demo `pkg-config --cflags --libs --gtk+-2.0`
作者 驿落黃昏