简单OpenCV测试代码编译链接错误(两个OpenCV版本并排安装)



我想在两个版本中使用OpenCV - 4和3(我想用C API练习一点,如果我理解正确的话,它在版本4中被删除了)。我有Kubuntu 20.04。我在自定义目录中编译并安装了两个OpenCV版本…/opencv/install3和…/opencv/install4。编译没有抛出任何错误。我使用以下选项来配置cmake(只有安装路径不同):

cmake -D BUILD_TIFF=ON -D WITH_CUDA=OFF -D ENABLE_AVX=OFF -D WITH_OPENGL=OFF -D WITH_OPENCL=OFF -D WITH_IPP=OFF -D WITH_TBB=ON -D BUILD_TBB=ON -D WITH_EIGEN=OFF -D WITH_V4L=OFF -D WITH_VTK=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=<mypath>/opencv/install4 -D OPENCV_EXTRA_MODULES_PATH=<mypath>/opencv_contrib/modules <mypath>/opencv/

但是,编译一个测试文件"cppopencv.cpp"消息失败:

g++ -I<mypath>/opencv/install4/include/opencv4 -c cppopencv.cpp -o cppopencv.o -std=c++11
g++  cppopencv.o -L<mypath>/opencv/install4/lib/ -lopencv_highgui  -o cppopencv 
/usr/bin/ld: cppopencv.o: undefined reference to symbol '_ZN2cv6imreadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi'
/usr/bin/ld: <mypath>/opencv/install4/lib/libopencv_imgcodecs.so.4.5: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [makefile:3: cppopencv] Error 1

OpenCV编译的测试代码和cmake选项取自这里:http://techawarey.com/programming/install-opencv-c-c-in-ubuntu-18-04-lts-step-by-step-guide/测试代码只包含"highgui";图书馆:

#include <opencv2/highgui.hpp>
#include <iostream>

int main( int argc, char** argv ) {

cv::Mat image;
image = cv::imread("opencv_testimage.png" ,cv::IMREAD_COLOR);

if(! image.data ) {
std::cout <<  "Image not found or unable to open" << std::endl ;
return -1;
}

cv::namedWindow( "Techawarey:OpenCV Test Program", cv::WINDOW_AUTOSIZE );
cv::imshow( "Techawarey:OpenCV Test Program", image );

cv::waitKey(0);
return 0;
}

请帮我找出问题所在。

在版本3和4的附加库链接中一切都运行良好(感谢@Miki的正确答案):

g++ -I<mypath>/opencv/install4/include/opencv4 -c cppopencv.cpp -o cppopencv.o -std=c++11
g++ cppopencv.o -L<mypath>/opencv/install4/lib/ -lopencv_core -lopencv_imgcodecs -lopencv_highgui -o cppopencv