Ubuntu 16.04 + OpenCV 自定義環境變量 pkg-config / PKG_CONFIG_PATH


 

0. 前言

今天在執行一段腳本的時候,爆出錯誤:

Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable

意思是在 PKG_CONFIG_PATH 環境變量中沒有找到 opencv 的配置文件 ‘opencv.pc’,即 opencv 不在 pkg-config 的搜索路徑,那什么是 pkg-config?什么是 PKG_CONFIG_PATH?

 

1. pkg-config

  一般我們寫的程序都是要依賴一些庫,如 opencv,但庫的安裝位置可能不同,這時就需要一個工具能夠管理並能搜索這些庫的路徑(頭文件路徑 /include,庫文件路徑 /lib)。

  pkg-config 就是通過庫提供的一個 .pc 文件獲得庫的各種必要信息的,包括版本信息、編譯和連接需要的參數等。通過 pkg-config 提供的參數(–cflags, –libs),將所需信息提取出來供編譯和連接使用。這樣,不管庫文件安裝在哪,通過庫對應的.pc文件就可以准確定位,。

  它提供的主要功能有:

  <1> 檢查庫的版本號。如果所需庫的版本不滿足要求,打印出錯誤信息,避免連接錯誤版本的庫文件。
  <2> 獲得編譯預處理參數,如宏定義,頭文件的路徑。
  <3> 獲得編譯參數,如庫及其依賴的其他庫的位置,文件名及其他一些連接參數。
  <4> 自動加入所依賴的其他庫的設置。

2. PKG_CONFIG_PATH

  pkg-config 默認會搜索 /usr/lib/pkgconfig /usr/share/pkgconfig下的 .pc 配置文件,若我們源碼編譯的庫的路徑不在 pkg-config 的搜索路徑下,則可以通過環境變量 PKG_CONFIG_PATH 將自定義的路徑添加到 pkg-config 的搜索路徑。

export PKG_CONFIG_PATH=/your/path:$PKG_CONFIG_PATH

 

3. 舉例:opencv庫

  我們有時候需要源碼編譯高版本的 opencv 庫,但又不想安裝到默認路徑下,這樣可能可能會覆蓋默認安裝的 opencv,則需要將自定義安裝路徑。默認的 CMAKE_INSTALL_PREFIX 為 /usr/local,通過以下參數來自定義安裝路徑。

cmake -D CMAKE_INSTALL_PREFIX=~/local ..

  安裝完成后,在 ~/local 路徑中並沒有找到 opencv.pc,我們可以手動創建

cd ~/local/lib
sudo mkdir pkgconfig && cd pkgconfig
sudo vim opencv.pc
prefix=~/local
exec_prefix=${prefix}
includedir=~/local/include
libdir=~/local/lib

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.1.0
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}

  在 ~/.bashrc 中添加環境變量

export PKG_CONFIG_PATH=~/local/lib/pkgconfig:$PKG_CONFIG_PATH

  通過下面命令來查看已添加的環境變量: 

echo $PKG_CONFIG_PATH

  通過 pkg-config 查看 opencv 版本

pkg-config --modversion opencv

  終端進入安裝opencv 的 python (我是用系統自帶的 python3.5),查看 opencv 的版本

import cv2
cv2.__version__

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM