Ubuntu 22.04中Python调用cdll.LoadLibrary加载libDTKLPR5.so失败求助
解决Ubuntu中ctypes无法加载共享库的问题
方法1:直接指定完整路径加载
如果明确libDTKLPR5.so的具体存放路径,直接将完整路径传入cdll.LoadLibrary即可,无需修改系统配置:
import ctypes # 替换为你的libDTKLPR5.so实际绝对路径 self.__DTKLPR = cdll.LoadLibrary("/home/xxx/Desktop/your-lib-dir/libDTKLPR5.so")
方法2:临时添加共享库搜索路径到环境变量
在Python代码调用cdll.LoadLibrary前,将库所在目录追加到LD_LIBRARY_PATH环境变量,同时通过RTLD_GLOBAL模式加载:
import os import ctypes # 替换为你的libDTKLPR5.so所在目录的绝对路径 lib_directory = "/path/to/your/library/folder" # 更新环境变量 os.environ['LD_LIBRARY_PATH'] = f"{lib_directory}:{os.environ.get('LD_LIBRARY_PATH', '')}" # 加载库 self.__DTKLPR = ctypes.CDLL("libDTKLPR5.so", mode=ctypes.RTLD_GLOBAL)
方法3:永久添加共享库搜索路径
方式A:用户级配置
编辑用户主目录下的.bashrc或.profile文件:
# 打开文件编辑 nano ~/.bashrc
在文件末尾添加:
export LD_LIBRARY_PATH="/path/to/your/library/folder:$LD_LIBRARY_PATH"
保存退出后执行以下命令使配置生效:
source ~/.bashrc
方式B:系统级配置
- 在
/etc/ld.so.conf.d/目录下新建配置文件:
sudo touch /etc/ld.so.conf.d/dtklpr.conf
- 将库所在目录写入该文件:
echo "/path/to/your/library/folder" | sudo tee /etc/ld.so.conf.d/dtklpr.conf
- 更新系统共享库缓存:
sudo ldconfig
方法4:创建软链接到系统默认共享库目录
将libDTKLPR5.so的软链接创建到系统默认搜索的共享库目录(如/usr/local/lib):
sudo ln -s /path/to/your/libDTKLPR5.so /usr/local/lib/libDTKLPR5.so
执行以下命令更新缓存:
sudo ldconfig
内容的提问来源于stack exchange,提问作者Aykhan.AR
相关产品推荐
相关产品推荐

