浅析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+request+unittest实现接口测试框架集成实例
Mar 16 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python 画条形图(柱状图)实例
Apr 24 Python
基于python和flask实现http接口过程解析
Jun 15 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
关于python中remove的一些坑小结
Jan 04 Python
python实现代码审查自动回复消息
Feb 01 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 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/08/06 PHP
php数组去重实例及分析
2013/11/26 PHP
浅谈php扩展imagick
2014/06/02 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
python双向链表实现实例代码
2013/11/21 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Python内置函数locals和globals对比
2020/04/28 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
个人授权委托书
2014/09/15 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
部队2014年终工作总结
2014/11/27 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python