pkg config 路徑問題

2022-06-09 19:24:06 字數 1499 閱讀 3882

pkg-config預設搜尋路徑

pkg-config --variable pc_path pkg-config

查詢結果是

/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

查詢pkg_config_path變數資訊

echo $pkg_config_path

/opt/ros/indigo/lib/pkgconfig

configure會根據傳入的配置專案檢查程式編譯時所依賴的環境以及對程式編譯安裝進行配置,最終生成編譯所需的makefile檔案供程式make讀入使用進而呼叫相關編譯程式(通常呼叫編譯程式都是gcc)來編譯最終的二進位制程式。而configure指令碼在檢查相應依賴環境時(例:所依賴軟體的版本、相應庫版本等),通常會通過pkg-config的工具來檢測相應依賴環境。

pkg-config用來檢索系統中安裝庫檔案的資訊,典型的是用作庫的編譯和連線。一般來說,如果庫的標頭檔案不在/usr/include目錄中,那麼在編譯的時候需要用-i引數指定其路徑。由於同乙個庫在不同系統上可能位於不同的目錄下,使用者安裝庫的時候也可以將庫安裝在不同的目錄下,所以即使使用同乙個庫,由於庫的路徑的不同,造成了用-i引數指定的標頭檔案的路徑和在連線時使用-l引數指定lib庫的路徑都可能不同,其結果就是造成了編譯命令介面的不統一。可能由於編譯,連線的不一致,造成同乙份程式從一台機器copy到另一台機器時就可能會出現問題。

pkg-config 就是用來解決編譯連線介面不統一問題的乙個工具。基本思想:pkg-config是通過庫提供的乙個.pc檔案獲得庫的各種必要資訊的,包括版本資訊、編譯和連線需要的引數等。需要的時候可以通過pkg-config提供的引數(–cflags, –libs),將所需資訊提取出來供編譯和連線使用。這樣,不管庫檔案安裝在哪,通過庫對應的.pc檔案就可以準確定位,可以使用相同的編譯和連線命令,使得編譯和連線介面統一。

它提供的主要功能有:

檢查庫的版本號。如果所需庫的版本不滿足要求,列印出錯誤資訊,避免連線錯誤版本的庫檔案。

獲得編譯預處理引數,如巨集定義,標頭檔案的路徑。

獲得編譯引數,如庫及其依賴的其他庫的位置,檔名及其他一些連線引數。

自動加入所依賴的其他庫的設定。

在預設情況下,每個支援 pkg-config 的庫對應的.pc檔案在安裝後都位於安裝目錄中的lib/pkgconfig目錄下.新軟體一般都會安裝.pc檔案,沒有可以自己建立,並且設定環境變數pkg_config_path設定擦汗尋.pc檔案路徑。使用pkg-config工具提取庫的編譯和連線引數有兩個基本的前提:

庫本身在安裝的時候必須提供乙個相應的.pc檔案。不這樣做的庫說明不支援pkg-config工具的使用。

pkg-config必須知道要到**去尋找此.pc 檔案。

pkg config用法詳解

我們在用第三方庫的時候,經常會用到pkg config這個東西來編譯程式。那pkg config究竟是什麼呢?本博文簡單地說一下。對於乙個比較大第三方庫,其標頭檔案和庫檔案的數量是比較多的。如果我們乙個個手動地寫,那將是相當麻煩的。所以,pkg config就應運而生了。pkg config能夠把這...

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...