浅析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检索特定内容的文本文件实例
Jun 05 Python
Python中存取文件的4种不同操作
Jul 02 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
python之array赋值技巧分享
Nov 28 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
python对文件的操作方法汇总
Feb 28 Python
Python如何脚本过滤文件中的注释
May 27 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
Python实现播放和录制声音的功能
Aug 12 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
Django admin组件的使用
Oct 24 Python
Python运算符+与+=的方法实例
Feb 18 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 a simple smtp class
2007/11/26 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
JavaScript面向对象编程
2008/03/02 Javascript
Javascript 对象的解释
2008/11/24 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python实现包含min函数的栈
2016/04/29 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
keras多显卡训练方式
2020/06/10 Python
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
简历里的自我评价范文
2014/02/24 职场文书
超市理货员岗位职责
2014/07/04 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
冰峪沟导游词
2015/02/09 职场文书
管理人员岗位职责
2015/02/14 职场文书
党支部意见范文
2015/06/02 职场文书
英语导游欢迎词
2015/09/30 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
python实现简单的三子棋游戏
2022/04/28 Python