引言
- 最近在学习海思3559上的opencv程序开发,下载了opencv4.0.1的源码并进行了编译,其中使用了pkg-config配置opencv的头文件和库文件路径,现在记录分享一下过程。
pkg-config介绍
-
通常我们在写程序时需要依赖一些库以及头文件,比如我今天用到的opencv,但库的安装位置可能不同,这时就需要一个工具能够管理并能搜索这些库的路径(头文件路径/include,库文件路径 /lib)。
-
pkg-config 就是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。通过
pkg-config 提供的参数(–cflags, –libs),将所需信息提取出来供编译和连接使用。这样,不管库文件安装在哪,通过库对应的.pc文件就可以准确定位。 -
它提供的主要功能有:
-
<1> 检查库的版本号。如果所需库的版本不满足要求,打印出错误信息,避免连接错误版本的库文件。
-
<2> 获得编译预处理参数,如宏定义,头文件的路径。
-
<3> 获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数。
-
<4> 自动加入所依赖的其他库的设置。
PKG_CONFIG_PATH环境变量配置
- pkg-config 默认会搜索 /usr/lib/pkgconfig 和/usr/share/pkgconfig下的 .pc 配置文件,若我们源码编译的库的路径不在 pkg-config 的搜索路径下,则可以通过环境变量 PKG_CONFIG_PATH 将自定义的路径添加到 pkg-config 的搜索路径,我已经配置过opencv,所以能够看到opencv的介绍
- `pkg-config --list-all | grep "open"
opencv OpenCV - Open Source Computer Vision Library
QtOpenGL Qtopengl - Qtopengl Library
openssl OpenSSL - Secure Sockets Layer and cryptography `
配置opencv.pc
- 以我个人的路径介绍,具体情况需要根据个人位置修改。
- 我的opencv4.0.1 make install 的路径通过cmake-gui 配置在**/opencv-4.0.1/install/下
- 所以我在终端中执行:
- cd **/opencv-4.0.1/install/lib/
- mkdir pkgconfig
- cd pkgconfig/
- vi opencv.pc
- #pkg-config根据opencv.pc中的内容配置opencv的路径和信息,具体如下面所示
- opencv.pc
**/opencv-4.0.1/install/ 是我个人安装路径,自己进行修改
prefix=**/opencv-4.0.1/install/
exec_prefix=${prefix}
includedir=**/opencv-4.0.1/install/include/
libdir=**/opencv-4.0.1/install/lib/
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.0.1
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
vi ~/.bashrc
#在文档最后添加
export PKG_CONFIG_PATH="**/opencv-4.0.1/install/lib/pkgconfig:$PKG_CONFIG_PATH"
然后使环境变量生效
source ~/.bashrc
#查看是否生效
echo $PKG_CONFIG_PATH
后续编译的时候就可以通过
`pkg-config --cflags opencv` `pkg-config --libs opencv`使用头文件和库文件