浅析python 动态库m.so.1.0错误问题


Posted in Python onMay 09, 2020

$ python -V
python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

ldd是列出动态库依赖关系:

$ ldd /usr/local/bin/python3.6

linux-vdso.so.1 => (0x00007fffecbba000)
libpython3.6m.so.1.0 => not found
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007fe1400ff000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007fe13fefb000)
libutil.so.1 => /usr/lib64/libutil.so.1 (0x00007fe13fcf8000)
libm.so.6 => /usr/lib64/libm.so.6 (0x00007fe13f9f6000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007fe13f628000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe14031b000)

查找动态库:

$ find / -name 'libpython3.6m.so.1.0'

/root/Python-3.6.9/libpython3.6m.so.1.0
/usr/local/lib/libpython3.6m.so.1.0

(2)将libpython3.6m.so.1.0文件路径的目录添加到/etc/ld.so.conf :

$ vim /etc/ld.so.conf 
文件末尾新添加一行,/usr/local/lib/

(3)保存,使得修改生效:

$ ldconfig

ps:下面看下python中使用动态库的方法

首先,创建一个简单的动态库

编程生成dll.so:   gcc -fPIC -O2 -shared dll.c -o dll.so
C文件:dll.c  如下

#include <stdio.h>

struct param {
  int a;
  int b;
  char c;
  float f;
  int arr[3];
  };
  
void print0(struct param arg)
{
  printf("in print:\n");
  printf("a: %d\n", arg.a);
  printf("b: %d\n", arg.b);
  printf("c: %c\n", arg.c);
  printf("f: %f\n", arg.f);
  printf("arr: %d %d %d\n", arg.arr[0], arg.arr[1], arg.arr[2]);
}

void print2(struct param *arg)
{
  printf("in print2 :\n");
  printf("a: %d\n", arg->a);
  printf("b: %d\n", arg->b);
  printf("c: %c\n", arg->c);
  printf("f: %f\n", arg->f);
  printf("arr: %d %d %d\n", arg->arr[0], arg->arr[1], arg->arr[2]);
}

void print3(int a)
{
  printf("in print3:\n");
  printf("a: %d\n", a);
}

python定义传给动态库的结构体

from ctypes import *

class ss(Structure):
  _fields_ = [
  ("a", c_int),
  ("b", c_int),
  ("c", c_char),
  ("f", c_float),
  ("arr", c_int*3), //定义数组
  ]

python 使用dll.so实例

#加载动态库
fileName = "/home/primax/Desktop/Work/Test/python/dll.so"
lib = cdll.LoadLibrary(fileName)
#定义变量
param = ss()
#给结构体赋值
param.a = 1
param.b = 2
param.c = 'a'
param.f = 1.2345
param.arr[0] = 0
param.arr[1] = 1
param.arr[2] = 2

lib.print0(param)
lib.print3(2)
#传指针 pointer取指针
lib.print2(pointer(param))

总结

到此这篇关于浅析python 动态库m.so.1.0错误问题的文章就介绍到这了,更多相关python m.so.1.0内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python访问sqlserver示例
Feb 10 Python
Python使用百度API上传文件到百度网盘代码分享
Nov 08 Python
Python解决鸡兔同笼问题的方法
Dec 20 Python
Python做智能家居温湿度报警系统
Sep 25 Python
python实现简单日期工具类
Apr 24 Python
Python笔记之facade模式
Nov 20 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
python和php哪个更适合写爬虫
Jun 22 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
解决Django transaction进行事务管理踩过的坑
Apr 24 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 #Python
Python发送邮件封装实现过程详解
May 09 #Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 #Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 #Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 #Python
Python接口测试数据库封装实现原理
May 09 #Python
解决pycharm安装第三方库失败的问题
May 09 #Python
You might like
PHP系统命令函数使用分析
2013/07/05 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
jQuery 表格工具集
2010/04/25 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python中os.remove()用法及注意事项
2021/01/31 Python
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
护士的岗位职责
2013/12/04 职场文书
社会实践评语
2014/04/28 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
学前班学生评语
2014/12/29 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
SQLServer常见数学函数梳理总结
2022/08/05 MySQL