浅析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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
python获取一组数据里最大值max函数用法实例
May 26 Python
python实现二分查找算法
Sep 21 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Python中交换两个元素的实现方法
Jun 29 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
python写日志文件操作类与应用示例
Jul 01 Python
python类共享变量操作
Sep 03 Python
python实现文件+参数发送request的实例代码
Jan 05 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
基于empty函数的判断详解
2013/06/17 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
Python爬虫与反爬虫大战
2020/07/30 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
自荐信格式简述
2014/01/25 职场文书
供货协议书范本
2014/04/22 职场文书
小学校本培训方案
2014/06/06 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
销售督导岗位职责
2015/04/10 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
比较node.js和Deno
2021/04/27 Javascript
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis