1 问题描述

在Ubuntu下 Qt 中使用OpenCV需要在官方 GitHub 下载源码后在本地使用 CMake 进行编译。我在使用cmake进行编译时出现了以下错误:

[ 36%] Built target opencv_ts
[ 36%] Linking CXX executable ../../bin/opencv_test_core
/usr/bin/ld: warning: libpcre.so.1, needed by //home/jk/anaconda3/lib/libglib-2.0.so.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libzstd.so.1.3.7, needed by //home/jk/anaconda3/lib/libtiff.so.5, not found (try using -rpath or -rpath-link)

根据报错可知是编译时想要使用anaconda3/lib/的文件却不可用。

2 解决方案

anaconda3/目录中的文件删除并替换成/lib/x86_64-linux-gnu/路径下文件的链接。
具体操作如下:

  1. 使用locate命令找到该文件的位置
locate libxxxx.xxx.so.x

对于我来说就是:

locate libglib-2.0.so.0

然后可以看到一系列的路径:

/home/jk/anaconda3/lib/libglib-2.0.so.0
/home/jk/anaconda3/lib/libglib-2.0.so.0.6301.0
/home/jk/anaconda3/pkgs/glib-2.63.1-h5a9c865_0/lib/libglib-2.0.so.0
/home/jk/anaconda3/pkgs/glib-2.63.1-h5a9c865_0/lib/libglib-2.0.so.0.6301.0
/lib/x86_64-linux-gnu/libglib-2.0.so.0
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
/snap/core/9804/lib/x86_64-linux-gnu/libglib-2.0.so.0
/snap/core/9804/lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
/snap/core/9993/lib/x86_64-linux-gnu/libglib-2.0.so.0
/snap/core/9993/lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
/snap/core18/1880/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
/snap/core18/1880/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4
/snap/core18/1885/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
/snap/core18/1885/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4
/snap/vlc/1700/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
/snap/vlc/1700/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4

找到其中包含/anaconda3/lib//lib/x86_64-linux-gnu/的路径。

  1. 移除anaconda中原有文件
    上面我们已经知道了文件在anaconda中的路径,使用rm进行移除:
sudo rm /home/jk/anaconda3/lib/locate libxxxx.xxx.so.x

接着我上面的例子,我的命令就是

sudo rm /home/jk/anaconda3/lib/libglib-2.0.so.0
  1. 使用ln命令生成新的连接文件
sudo ln -s /lib/x86_64-linux-gnu/libxxxx.xxx.so.x /home/jk/anaconda3/lib/libxxxx.xxx.so.x

对于我的例子就是:

sudo ln -s /lib/x86_64-linux-gnu/libglib-2.0.so.0 /home/jk/anaconda3/lib/libglib-2.0.so.0

然后再次使用sudo make命令就不会报这个错误了。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐