我正在尝试使用已编译为/usr/local/lib/libName.so
的库,但是在运行需要此文件的python脚本时:
from ctypes import CDLL
[...]
__lib = CDLL('libName.so')
我得到:
OSError: libName.so: cannot open shared object file: No such file or directory
所以我想知道我需要在哪里复制.so文件,以便此CDLL调用正常工作。
答案 0 :(得分:1)
ctypes ([Python 3.5]: ctypes - A foreign function library for Python),使用 dlopen ([man7]: DLOPEN(3))来加载库,该库委托加载(并隐式查找)任务发送到 Lnx 加载程序。
[man7]: LD.SO(8)中很好地解释了搜索 .so 的路径。这是默认值的说明:
- 在默认路径 / lib 中,然后在 / usr / lib 中。 (在某些64位体系结构上,64位共享对象的默认路径是 / lib64 ,然后是 / usr / lib64 。)
解决问题的方法:
__lib = CDLL("/usr/local/lib/libName.so")
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib python