浅析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统计文本字符串里单词出现频率的方法
May 26 Python
理解python中生成器用法
Dec 20 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
python程序 创建多线程过程详解
Sep 23 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 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
YII模块实现绑定二级域名的方法
2014/07/09 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
python 读写、创建 文件的方法(必看)
2016/09/12 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
对python Tkinter Text的用法详解
2018/10/11 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python支持多线程的爬虫实例
2019/12/21 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
应聘文员自荐信范文
2014/03/11 职场文书
合作意向书范本
2014/03/31 职场文书
工作分析计划书
2014/04/30 职场文书
微笑服务标语
2014/06/24 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
详解OpenCV曝光融合
2022/04/29 Python
服务器间如何实现文件共享
2022/05/20 Servers