ctypes CDLL的默认路径是什么?

2024-09-24 02:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用一个编译为/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调用才能正常工作。在


Tags: 文件fromimport脚本solibusrlocal
1条回答
网友
1楼 · 发布于 2024-09-24 02:21:41

{加载和的加载程序(加载>库)。在

搜索的路径在[man7]: LD.SO(8)中有很好的解释。以下是关于默认值的说明:

  • In the default path /lib, and then /usr/lib. (On some 64-bit architectures, the default paths for 64-bit shared objects are /lib64, and then /usr/lib64.)

解决问题的方法(最常见的):

  1. 将完整路径传递到CDLL
    • __lib = CDLL("/usr/local/lib/libName.so")
  2. 告诉加载程序也在/usr/local/lib中搜索.sos,方法是将其添加到${LD\'LIBRARY_PATH}env var中,以找到要加载它的python进程:
    • export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
    • LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib python
  3. .so复制到一个默认的搜索路径中(虽然我不建议这样做,但如果必须,请将其复制到/usr/lib而不是/lib

相关问题 更多 >