浅析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 中__name__ = '__main__' 的作用
Jul 05 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
python的类方法和静态方法
Dec 13 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
python开发简易版在线音乐播放器
Mar 03 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
python实现字符串和字典的转换
Sep 29 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
python如何写try语句
Jul 14 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 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
SMARTY学习手记
2007/01/04 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
Python读写文件基础知识点
2019/06/10 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
Django数据库迁移常见使用方法
2020/11/12 Python
Java工程师面试集锦之Spring框架
2013/06/16 面试题
高中物理教学反思
2014/02/08 职场文书
家长写给孩子的评语
2014/04/18 职场文书
会计个人实习计划书
2014/08/15 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2014年林业工作总结
2014/12/05 职场文书
城南旧事电影观后感
2015/06/16 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
k-means & DBSCAN 总结
2021/04/27 Python