在编译DS-SLAM时出现以下错误:
c++: error: /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0: 没有那个文件或目录
c++: error: /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0: 没有那个文件或目录
c++: error: /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0: 没有那个文件或目录
不知道是什么原因它报错是与opencv3.2.0版本相关文件有关,但是我系统中没有安装3.2版本的opencv,以下是我的解决方法:
首先进入/usr/lib/x86_64-linux-gnu/下,查看各文件链接情况:
#进入相关文件夹下
cd /usr/lib/x86_64-linux-gnu/
#查看各文件链接情况
ls -l
然后我这里的情况是只有我系统现有的版本的相关文件的链接信息:
lrwxrwxrwx 1 root root 23 5月 23 21:12 libopencv_core.so.3.4 -> libopencv_core.so.3.4.5
lrwxrwxrwx 1 root root 46 5月 23 20:02 libopencv_core.so.3.4.5 -> /usr/local/opencv3/lib/libopencv_core.so.3.4.5
lrwxrwxrwx 1 root root 28 5月 23 21:12 libopencv_imgcodecs.so.3.4 -> libopencv_imgcodecs.so.3.4.5
lrwxrwxrwx 1 root root 51 5月 23 20:04 libopencv_imgcodecs.so.3.4.5 -> /usr/local/opencv3/lib/libopencv_imgcodecs.so.3.4.5
lrwxrwxrwx 1 root root 26 5月 23 21:12 libopencv_imgproc.so.3.4 -> libopencv_imgproc.so.3.4.5
lrwxrwxrwx 1 root root 49 5月 23 19:59 libopencv_imgproc.so.3.4.5 -> /usr/local/opencv3/lib/libopencv_imgproc.so.3.4.5
于是我就建立libopencv_core.so.3.2.0、libopencv_imgproc.so.3.2.0、libopencv_imgcodecs.so.3.2.0文件,然后把他们链接到我拥有的文件上:
(注意我这里的命令是在/usr/lib/x86_64-linux-gnu/文件夹下执行的,如果在别的终端中执行,应写清楚路径)
ps:sudo ln -s 链接到的文件 目标文件
sudo ln -s libopencv_core.so.3.4.5 libopencv_core.so.3.2.0
链接后是这样,这里就写了一个作为例子:
lrwxrwxrwx 1 root root 23 8月 28 21:07 libopencv_core.so.3.2.0 -> libopencv_core.so.3.4.5
将这三个文件重新链接后,重新编译,没有找不到文件的错误了,但是有新的错误:
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0:对‘icv_k0_ippiNorm_L2_32f_C1R’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0:对‘icv_y8_ippsCopy_32s’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0:对‘ippicvsZero_8u’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0:对‘icv_k0_ippiSet_16u_C3R’未定义的引用
像这样等等很多,未定义应用的错误,我猜测应该是链接到的这个3.4.5版本的文件也不能用,然后我就在/usr/目录下搜索libopencv_imgproc文件,发现别的路径下,其实是opencv3.4.5的安装路径下有该文件,于是我就把libopencv_imgproc.so.3.2.0链接到opencv3.4.5的安装路径下的libopencv_imgproc.so.3.4.5,在进行编译就没有报错了。
lrwxrwxrwx 1 root root 41 8月 28 21:16 libopencv_imgproc.so.3.2.0 -> /usr/local/lib/libopencv_imgproc.so.3.4.5
总结,如果还有报错,就寻找别的文件进行链接,如果所有文件都报错,那么应该现有的opencv也有问题,就要考虑重新安装合适版本的opencv。