前面博客里源码编译出了动态链接库,正常我们apt-get方式或者aptitude方式安装opencv时,装的也是OpenCV的动态链接库,这里想简单验证下OpenCV的静态库。还是用cmake-gui进行编译,详情不细说了,可以参考我之前的博客,BUILD_SHARED_LIBS去掉勾选项,其它选项可以都一致。
博主这里的编译生成的路径和安装路径见下面红色标记线。build_share和install_share对应上篇博客的编译文件和安装文件所在的文件夹。
完毕后,可看到install/lib文件夹下的静态库
这里可以打开pkgconfig下opencv.pc文件,修改为如下内容
# Package Information for pkg-config
prefix=/home/sxhlvye/opencv-3.4.0/install
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.0
Libs: -L${exec_prefix}/lib -lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core -L${exec_prefix}/share/OpenCV/3rdparty/lib -littnotify -llibprotobuf -llibjpeg -llibwebp -llibpng -llibtiff -llibjasper -lIlmImf -L/home/sxhlvye/qt-everywhere-src-5.15.2/install/lib -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Test -lQt5Concurrent -L/usr/lib/x86_64-linux-gnu -lz -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lxml2 -lgstvideo-0.10 -lgstapp-0.10 -lgstriff-0.10 -lgstpbutils-0.10 -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
同时注意编辑~/.bashrc文件,将opencv.pc文件的路径添加到pkg-congfig的查找路径中去,如下红色标记处。
终端cd到前面很多博客测试的example1.cpp所在目录下,执行如下命令
g++ example.cpp -o example1.out $(pkg-config --cflags --libs opencv) -lpthread -lrt -ldl
可以看到程序能够正常编译和执行。并不需要添加库所在路径的环境变量,或者把静态库拷贝到可执行所在目录下。
|