浅析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冲顶大会 快来答题!
Jan 17 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
pygame实现简易飞机大战
Sep 11 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
python实现超市商品销售管理系统
Oct 25 Python
Python SSL证书验证问题解决方案
Jan 13 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Python如何定义有默认参数的函数
Aug 10 Python
python如何爬取动态网站
Sep 09 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
Python中itertools库的四个函数介绍
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
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
利用python实现数据分析
2017/01/11 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
浅谈django 重载str 方法
2020/05/19 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
经典大学生求职信范文
2014/01/06 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
学校课外活动总结
2014/05/08 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
银行授权委托书样本
2014/10/13 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书