linux动态库链接路径顺序,【未完待补充】linux 设置So动态库链接路径

缘起

安装python的包Rtree(Rtree-0.8.2),但需要先安装C语言依赖包spatialindex-src(spatialindex-src-1.8.5)。在安装完spatialindex-src后,再安装Rtree过程中出现问题:

dimite@ubuntu:~/wzh/Rtree-0.8.2$ python setup.py build

Traceback (most recent calllast):

File"setup.py", line 4, in import rtree

File"/home/dimite/wzh/Rtree-0.8.2/rtree/__init__.py", line 1, in from .index import Rtree

File"/home/dimite/wzh/Rtree-0.8.2/rtree/index.py", line 6, in from . import core

File"/home/dimite/wzh/Rtree-0.8.2/rtree/core.py", line 106, in rt=ctypes.CDLL(lib_name)

File"/usr/lib/python2.7/ctypes/__init__.py", line 365, in__init__

self._handle=_dlopen(self._name, mode)

OSError: libspatialindex_c.so.4: cannot open shared object file: No such file or directory

错误日志提示找不到动态链接库 libspatialindex_c.so.4,利用命令寻找动态链接库

dimite@ubuntu:~/wzh/Rtree-0.8.2$ sudo find / -name libspatialindex_c.so.4[sudo] password fordimite:/usr/local/lib/libspatialindex_c.so.4

/home/dimite/wzh/spatialindex-src-1.8.5/.libs/libspatialindex_c.so.4

需要四个动态链接库文件,都在/usr/local/lib中

dimite@ubuntu:~/wzh/Rtree-0.8.2$ ls /usr/local/lib | grep libspatialindex | grepso

libspatialindex_c.so

libspatialindex_c.so.4libspatialindex_c.so.4.0.1libspatialindex.so

libspatialindex.so.4libspatialindex.so.4.0.1

解决

方法一:

把动态链接库所在的路径添加到/etc/ld.so.conf中

include /etc/ld.so.conf.d/*.conf

/usr/local/lib/

然后更新/etc/so.cache

sudo ldconfig

方法二:

同方法一,把具体的so链接库写到/etc/ld.so.conf.d/下的conf文件中

/usr/local/lib/

方法三:

设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔)

结论

以root身份把库路径加入到/etc/ld.so.conf或在/etc/ld.so.conf.d中创建特定的.conf文件,运行ldconfig更新动态链接库

设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔)

深究

python怎么调用c的库

python的setup.py 怎么执行,里边没有看到具体的build、install字眼

ctype里的__init__.py又是怎么和动态链接库a联系在一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值