pkg config工具包程式編譯中的使用

2021-07-06 01:58:24 字數 2625 閱讀 4559

當程式依賴的外部庫檔案和標頭檔案相對比較多時,每次建立工程都需要對這些庫檔案進行配置,這個過程比較繁瑣,所以pkg-config工具包被開發出來,解決這乙個問題。本文主要介紹如何使用pkg-config工具包,並給出opencv和armadillo軟體庫才用pkg-config配置的例子。本文實在ubuntu14.04的基礎上進行測試。

1. 安裝pkg-config工具包

如果ubuntu系統中沒有pkg-config工具包,可以通過下面的**進行安裝

sudo apt-get install pkg-config

2.設定pkg-config系統環境變數

開啟/etc/bash.bashrc檔案,在最後加入

pkg_config_path=$pkg_config_path:/usr/local/lib/pkgconfig

export pkg_config_path

系統開機後/etc/bash.bashrc檔案中的資訊會自動被系統檢測,pkg_config_path會自動加入到系統變數中

上面的路徑/usr/local/lib/pkgconfig 是存放opencv.pc和armadillo.pc等類似配置檔案的地方。這樣pkg-config才能夠正確的找到相關庫檔案的配置資訊。

3. opencv.pc檔案解析

# package information for pkg-config

prefix=/usr/local

exec_prefix=$

libdir=

includedir_old=$/include/opencv

includedir_new=$/include

name: opencv

description: open source computer vision library

version: 2.4.10

libs: $/lib/libopencv_calib3d.so $/lib/libopencv_contrib.so $/lib/libopencv_core.so

$/lib/libopencv_features2d.so $/lib/libopencv_flann.so $/lib/libopencv_gpu.so

$/lib/libopencv_highgui.so $/lib/libopencv_imgproc.so $/lib/libopencv_legacy.so

$/lib/libopencv_ml.so $/lib/libopencv_nonfree.so $/lib/libopencv_objdetect.so

$/lib/libopencv_ocl.so $/lib/libopencv_photo.so $/lib/libopencv_stitching.so

$/lib/libopencv_superres.so $/lib/libopencv_ts.a $/lib/libopencv_video.so

$/lib/libopencv_videostab.so -lrt -lpthread -lm -ldl

cflags: -i$ -i$# package information for pkg-config

上面的檔案是ubuntu中

安裝opencv庫後自動生成的檔案,其中libs標號後面給出了opencv常用的庫檔案資訊。cflags標號後面給出opencv的標頭檔案路徑資訊

在每次編譯使用了opencv庫的工程時可以執行下面的**:

g++ main.cpp -o main `pkg-config --cflags --libs opencv`

4.編寫armadillo.pc檔案

仿照opencv.pc檔案,這裡編寫了armadillo.pc,並將其複製到/usr/local/lib/pkgconfig目錄下,這樣就可以使用pkg-config工具編譯使用了armadillo

庫的工程。

#package information for pkg-config

prefix=/usr/local

exec_prefix=$

libdir=$/lib

includedir=$/include/armadillo

name: armadillo

description: c++ linear algebra library

version: 6.100.0

libs: -l$ -larpack -llapack -lopenblas -lf2c -lgfortran

cflags: -i$

如果乙個工程即使用了opencv也使用

armadillo

,編譯時只要才用下面**即可, 使用很方便。

g++ globalpb.cpp -o globalpb -o2 `pkg-config --cflags --libs opencv armadillo`

5.總結

使用pkg-config工具包可以方便工程使用多種庫檔案時的編譯工作。只需編寫好每個庫的.pc檔案,並複製到pkg_config_path環境變數制定的目錄,並可以正常使用。

拷貝工具包

常用工具包封裝.懶得引各種雜七八的包,輕量級包.cglib還是需要的 scope provided 1.0.0 copyutils beancopier封裝.提供簡單的單一複製與list複製.不支援自定義建構函式的類的複製.abc abc copyutil copysigle abc class o...

Linux VMware tools工具包的安裝

啟動vm中的linux,選擇vmware workstation程式選單中vm install vmware tools.執行 mkdir mnt cdrom mount o ro dev cdrom mnt cdrom vmtools的安裝檔案放在vmware虛擬的cdrom中,首先要mount上...

PLSQL內建工具包

動態sql 不是在designer time寫的sql,而是可以在執行時臨時拼接起來的sql語句 例如 create or replace procedure delete all rows p tab name in varchar2,p rows del out number iscursor ...