ubuntu中设置动态链接库的路径有两种方式:
- 在
.bashrc
中添加export LD_LIBRARY_PATH=lib_path:$LD_LIBRARY_PATH
(其中lib_path
表示动态链接库路径),保存.bashrc
之后采用命令source .bashrc
激活; - 在
/etc/ld.so.conf.d
添加文件some_lib.conf
,并在其中写入lib_path
,(some_lib
可以用动态链接库库名表示,如opencv
可写成opencv.conf
),之后采用sudo ldconfig
激活。
这两种方式最后实现的效果是等价的,它们都可以用于解决文件或动态链接库找不到其依赖库的情况。
举个例子
我们想用源码编译opencv
,在我们安装好依赖库,并在make install
成功后,opencv
的相关动态链接库被安装至/usr/local/lib
中。这个时候,我们不仅想用opencv
的c/c++
接口,还想用它的python
接口。
网上常规的一种方法是将源码编译的opencv/build/lib/cv2.so
和opencv/modules/python/src2/cv.py
两个文件拷贝至python2.7/dist-packages
或python/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
的动态链接库的方式来解决这个问题。但注意终端一定要重开一个,如果还是采用原始终端,终端可能未识别到更改。