浅析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使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
Python Pandas数据中对时间的操作
Jul 30 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
简单了解如何封装自己的Python包
Jul 08 Python
Python配置pip国内镜像源的实现
Aug 20 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
教你怎么用Python操作MySql数据库
May 31 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网站在线人数统计
2008/04/09 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
python练习程序批量修改文件名
2014/01/16 Python
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python WSGI的深入理解
2018/08/01 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
python中 * 的用法详解
2019/07/10 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
临床医学专业求职信
2014/08/08 职场文书
2015年教师节慰问信
2015/03/23 职场文书
实习推荐信格式模板
2015/03/27 职场文书
学校运动会开幕词
2016/03/03 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers