python调用c makefile的动态链接库,报找不到libfundermental.so和libbtplatform.so的4种解决方法

报错内容:

Traceback (most recent call last):
  File "QBB_TFD_Test.py", line 10, in <module>
    from qbbface.QBB_TFD import *
  File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD.py", line 6, in <module>
    from qbbface.QBB_TFD_Library import *
  File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD_Library.py", line 13, in <module>
    internalLibrary = CDLL(u'/home/xuqiong/code/imgservice/pyqbbface/lib/libfacedetect.so')
  File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libfundamental.so: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "QBB_TFD_Test.py", line 10, in <module>
    from qbbface.QBB_TFD import *
  File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD.py", line 6, in <module>
    from qbbface.QBB_TFD_Library import *
  File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD_Library.py", line 13, in <module>
    internalLibrary = CDLL(u'/home/xuqiong/code/imgservice/pyqbbface/lib/libfacedetect.so')
  File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libbtplatform.so: cannot open shared object file: No such file or directory

(1)方法一:将这两个动态链接库加入到/usr/local/lib路径中即可

这个方法比较暴力

 

(2)方法二:命令行修改:LIB_LIBRARY_PATH

该环境变量LIB_LIBRARY_PATH主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录设置到LD_LIBRARY_PATH中。
当执行函数动态链接.so时,如果此文件不在缺省目录下‘/usr/local/lib’ and ‘/usr/lib’.
那么就需要指定环境变量LD_LIBRARY_PATH
假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式:
export LD_LIBRARY_PATH=xxx:$LD_LIBRARY_PATH(xxx是新的路径串)

参考文章:https://www.cnblogs.com/mylinux/p/4955448.html

 

(3)方法三:python脚本修改:LIB_LIBRARY_PATH

LD_LIBRARY_PATH属于进程中的环境变量,Python代码开始运行后是无法修改的,即使通过os.environ['LD_LIBRARY_PATH']='path'来设置也不起作用,有个变通的方式是设置os.environ['LD_LIBRARY_PATH']后,调用os.execv重新启动程序。

前提是python脚本必须是可执行的,如果不可执行,请运行chmod a+x a.py将其变为可执行。

参考文章:https://blog.csdn.net/bodybo/article/details/84648043

 

(4)方法四:

在调用依赖libfundermental.so库之前,先强行先从/lib路径下load libfundermental.so。因为load face.so时,依赖的库会先从内存里找,如果先强行读取了,则不需要从路径中读了。

如下:

从只调用一个:

 

强行调用3个:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值