在RK3399pro上面编译安装OpenCV3.4.7,安装好相关的依赖项之后,运行sudo make,结果出现报错,报错信息如下:
[ 65%] Building CXX object modules/viz/CMakeFiles/opencv_viz.dir/src/vtk/vtkVizInteractorStyle.cpp.o
[ 65%] Building CXX object modules/viz/CMakeFiles/opencv_viz.dir/src/vtk/vtkXYZReader.cpp.o
[ 65%] Building CXX object modules/viz/CMakeFiles/opencv_viz.dir/src/vtk/vtkXYZWriter.cpp.o
[ 65%] Building CXX object modules/viz/CMakeFiles/opencv_viz.dir/src/widget.cpp.o
make[2]: *** No rule to make target '/usr/lib/aarch64-linux-gnu/libGL.so', needed by 'lib/libopencv_viz.so.3.4.7'. Stop.
CMakeFiles/Makefile2:2486: recipe for target 'modules/viz/CMakeFiles/opencv_viz.dir/all' failed
make[1]: *** [modules/viz/CMakeFiles/opencv_viz.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2
报错信息提示在路径/usr/lib/aarch64-linux-gnu/下面找不到libGL.so文件。
在终端中打开/usr/lib/aarch64-linux-gnu/路径,查找libGL 相关文件。
输入:locate libGL.so,显示信息如下:
libGL.so libGLEW.so libGLX.so.0
libGL.so.1 libGLEW.so.2.0 libGLX.so.0.0.0
libGL.so.1.0.0 libGLEW.so.2.0.0 libGLX_indirect.so.0
libGLESv1_CM.so libGLU.a libGLX_mesa.so.0
libGLESv2.so libGLU.so libGLX_mesa.so.0.0.0
libGLESv2.so.2 libGLU.so.1 libGLdispatch.so.0
libGLESv2.so.2.0.0 libGLU.so.1.3.1 libGLdispatch.so.0.0.0
首先使用sudo rm libGL.so删掉该路径下的libGL.so文件,
然后使用命令行:sudo ln -s /usr/lib/aarch64-linux-gnu/libGL.so.1 /usr/lib/aarch64-linux-gnu/libGL.so,将libGL.so.1与libGL.so关联起来。
再次运行sudo make 命令,编译通过。
该解决方法的本质就是在你的设备中找到libGL.so相关的文件,使得它与报错提示信息中'/usr/lib/aarch64-linux-gnu/libGL.so'的文件关联起来,
有可能你的libGL.so相关文件不在/usr/lib/aarch64-linux-gnu/文件夹下面,很多帖子中提到的libGL.so相关文件在/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2中,根据自己的实际情况来确定
参考博客:找不到libGL.so库,No rule to make target ‘/usr/lib/aarch64-linux-gnu/libGL.so‘_alex1801-CSDN博客