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工具的使用的。
    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`
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章