浅析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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
使用Python设计一个代码统计工具
Apr 04 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
python Cartopy的基础使用详解
Nov 01 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
jquery密码强度校验
2015/12/02 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
JS实现百度搜索框
2021/02/25 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python实现代码统计器
2019/09/19 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
Pandas的数据过滤实现
2021/01/15 Python
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
上课迟到检讨书100字
2014/01/11 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
公民代理授权委托书
2014/09/24 职场文书
面试通知短信
2015/04/20 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL