0. 前言python
今天在执行一段脚本的时候,爆出错误:vim
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?bash
1. pkg-configapp
通常咱们写的程序都是要依赖一些库,如 opencv,但库的安装位置可能不一样,这时就须要一个工具可以管理并能搜索这些库的路径(头文件路径 /include,库文件路径 /lib)。ide
pkg-config 就是经过库提供的一个 .pc 文件得到库的各类必要信息的,包括版本信息、编译和链接须要的参数等。经过 pkg-config 提供的参数(–cflags, –libs),将所需信息提取出来供编译和链接使用。这样,无论库文件安装在哪,经过库对应的.pc文件就能够准肯定位,。工具
它提供的主要功能有:ui
<1> 检查库的版本号。若是所需库的版本不知足要求,打印出错误信息,避免链接错误版本的库文件。
<2> 得到编译预处理参数,如宏定义,头文件的路径。
<3> 得到编译参数,如库及其依赖的其余库的位置,文件名及其余一些链接参数。
<4> 自动加入所依赖的其余库的设置。spa
2. PKG_CONFIG_PATH3d
pkg-config 默认会搜索 /usr/lib/pkgconfig
和/usr/share/pkgconfig
下的 .pc
配置文件,若咱们源码编译的库的路径不在 pkg-config 的搜索路径下,则能够经过环境变量 PKG_CONFIG_PATH 将自定义的路径添加到 pkg-config 的搜索路径。code
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__