关于ubuntu中动态链接库路径的设置以及源码编译python可用的opencv

ubuntu中设置动态链接库的路径有两种方式:

  1. .bashrc添加export LD_LIBRARY_PATH=lib_path:$LD_LIBRARY_PATH(其中lib_path表示动态链接库路径),保存.bashrc之后采用命令source .bashrc激活;
  2. /etc/ld.so.conf.d添加文件some_lib.conf,并在其中写入lib_path,(some_lib可以用动态链接库库名表示,如opencv可写成opencv.conf),之后采用sudo ldconfig激活。
    这两种方式最后实现的效果是等价的,它们都可以用于解决文件或动态链接库找不到其依赖库的情况。

举个例子

我们想用源码编译opencv,在我们安装好依赖库,并在make install成功后,opencv的相关动态链接库被安装至/usr/local/lib中。这个时候,我们不仅想用opencvc/c++接口,还想用它的python接口。
网上常规的一种方法是将源码编译的opencv/build/lib/cv2.soopencv/modules/python/src2/cv.py两个文件拷贝python2.7/dist-packagespython/site-packages
(二者的区别在于如果你的python是源码编译的,则第三方库会被放在site-packages中,如果你是采用sudo apt-get install python-dev,第三方库会被放在dist-packages中),
但是按照这种方法执行后,我发现自己的python2.7/dist-packages/cv2.so如果采用ldd查询依赖库的话,会出现

libopencv_core.so => not found

等相关opencv库找不到的情况。
这时候,我们可以通过设置opencv的动态链接库的方式来解决这个问题。但注意终端一定要重开一个,如果还是采用原始终端,终端可能未识别到更改。

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...