目录

  • 1. 报错
  • 2. 原因
  • 3. 尝试
  • 4. 解决

1. 报错

用python调用动态链接库,编译完全没有问题,顺利生成.so文件,但是运行python调用该库时,发生报错。

报错信息如下:

Traceback (most recent call last):File "py_send.py", line 14, in <module>sharelib = libLoad("./build/libpython2share.so")File "/home/aaeon/miniforge3/envs/safeguard/lib/python3.6/ctypes/__init__.py", line 426, in LoadLibraryreturn self._dlltype(name)File "/home/aaeon/miniforge3/envs/safeguard/lib/python3.6/ctypes/__init__.py", line 348, in __init__self._handle = _dlopen(self._name, mode)
OSError: /usr/lib/aarch64-linux-gnu/liblapack.so.3: undefined symbol: icamin_k

通过阅读最后一行的报错信息OSError: /usr/lib/aarch64-linux-gnu/liblapack.so.3: undefined symbol: icamin_k,我们可以看到,是/usr/lib/aarch64-linux-gnu/liblapack.so.3中出现了未定义符号icamin_k

2. 原因

上面我们得到信息,是/usr/lib/aarch64-linux-gnu/liblapack.so.3中出现了未定义符号icamin_k导致的报错。

可以想象,我的c++程序在编译时,可能调用了/usr/lib/aarch64-linux-gnu/liblapack.so.3,并利用该动态链接库生成可执行文件,未定义符号icamin_k就是此时被带进来的。

这里,可以通过命令stat /usr/lib/aarch64-linux-gnu/liblapack.so.3看到,/usr/lib/aarch64-linux-gnu/liblapack.so.3实际上是一个指向liblapack.so的软连接。之所以报错,应该是该软连接指向了一个错误的liblapack.so,而该错误动态链接库中,包含符号icamin_k

也就是说,我们需要找到不包含符号icamin_k的动态链接库liblapack.so

3. 尝试

我们直接进入路径/usr/lib/aarch64-linux-gnu下进行查找。

  • 搜索该路径下所有名称上包含“liblapack.so”的软链接和文件,如下
sudo find ./ -type l,f -name "*liblapack.so*"

搜索结果为

./liblapack.so
./lapack/liblapack.so
./lapack/liblapack.so.3
./lapack/liblapack.so.3.7.1
./atlas/liblapack.so
./atlas/liblapack.so.3
./atlas/liblapack.so.3.10.3
./liblapack.so.3
./openblas/liblapack.so
./openblas/liblapack.so.3

可以看到,该路径下,文件夹./lapack/./atlas/./openblas/中有该软连接。

  • 搜索该路径下所有内容上包含icamin_k的文件,如下
sudo grep -rn "icamin_k"

搜索结果为

Binary file libopenblas_armv8p-r0.2.20.so matches
Binary file openblas/libblas.so.3 matches
Binary file openblas/liblapack.so.3 matches
Binary file libopenblas_armv8p-r0.2.20.a matches

可以看到,该路径下,文件夹./openblas/中的软连接包含字符icamin_k,所以我们要找的链接应该在./lapack/./atlas/中。

也就是说,我们只需要将软链接/usr/lib/aarch64-linux-gnu/liblapack.so.3更新,指向./lapack/或者./atlas/中的同名动态库就可以了。

4. 解决

参考博客《liblapack.so.3: undefined symbol: icamin_k错误及解决办法》

依次执行以下命令,

cd /usr/lib/aarch64-linux-gnu
sudo rm liblapack.so.3
sudo rm liblapack.so
sudo ln -s /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 liblapack.so.3
sudo ln -s /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 liblapack.so

注意,这是jetson的机器!

python调用.so动态链接库,运行时报错 liblapack.so.3: undefined symbol: icamin_k相关推荐

  1. 关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法

    问题描述:在借鉴别人的程序时,直接把部分hal库的程序拿来用,在编译时出现下图所示的问题 1 . 尝试解决但是没有成功的办法: 1.1 头文件包含问题 一开始以为是没有包含头文件,将头文件包含后,再次 ...

  2. Python 多进程的进程池pool运行时报错:ValueError: Pool not running

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python 多进程的进程池pool运行时报错:ValueError: Pool not running def main(self, num):& ...

  3. Java 调用 Caffe_解决 free(): invalid pointer: 0x00000000019ff700 运行时报错(caffe)(libtool使用)...

    编译成功,运行时报错: 在使用 pytorch or tensorflow or caffe 时,都可能存在这个问题: *** Error in `xxx': free(): invalid poin ...

  4. Android 接口的default 方法运行时报错AbstractMethodError

    [问题描述:接口default方法AbstractMethodError] 记录一个Android项目中遇到的问题,我们通过exclude方式重写了一个依赖,改用本地的实现,其中一个接口的defaul ...

  5. Python: PyCharm中导入matplotlib时报错:“Backend Qt5Agg is interactive backend”的解决方案

    Python: PyCharm中导入matplotlib时报错:"Backend Qt5Agg is interactive backend"的解决方案 在使用PyCharm时,在 ...

  6. adb shell 运行时报错“adb server version (26) doesn‘t match this client (39); killing...“的解决方案

    adb shell 运行时报错"adb server version (26) doesn't match this client (39); killing..."的解决方案 参 ...

  7. 在 HBuilder X 创建Uni-app项目运行时报错

    在 HBuilder X 创建Uni-app项目运行时报错 需解决的问题有两个,创建的项目就可以编译成功,项目也可以成功启动了 1.在HBuilder X 的 工具 - 设置 - 运行设置 - 微信开 ...

  8. spring集成kafka运行时报错:Failed to construct kafka producer] with root cause

    spring集成kafka运行时报错:Failed to construct kafka producer] with root cause org.apache.kafka.common.Kafka ...

  9. 解决pytest运行时报错ModuleNotFoundError

    封装代码后通过pytest运行时报错模块没找到错误. 导入模块前面加上这2句话解决 No modlue name '模块名'的报错. import os,sys sys.path.append(os. ...

最新文章

  1. 三相滤波器怎么接线_您知道家用电表如何接线吗?小编来告诉你!
  2. LeetCode--167--两数之和 II - 输入有序数组
  3. AbstractListView源码分析8
  4. go语言第一个程序-hello world
  5. 程序员的数学_数学公式太晦涩,不如用代码写出来:这是程序员学数学的独特方式...
  6. 安卓手机主题软件_手机看书神器!Amazon Kindleios、安卓软件
  7. imp遇到重复数据_数据挖掘入门 - 泰坦尼克号生存预测
  8. 如何看待EMNLP2021 best paper? 邱锡鹏教授:以为走错会场了
  9. 0x00D2DCAC 处(位于 Company.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000024 时发生访问冲突。
  10. AS开发者转LAYA一周心得
  11. 【实践】Pytorch nn.Transformer的mask理解
  12. Spring Aop技术原理分析
  13. 在线供应链系统服务方案:构建企业供应链平台业务、功能、技术管理架构
  14. Revisiting Pixel-Wise Supervision for Face Anti-Spoofing
  15. 二维点集求外轮廓Java_从二维点集重建平面形状-浅议凹包算法
  16. 精玉PC技术GHOSTXP_SP3纯净版V10_祥和版
  17. 南非监管机构严厉打击Facebook的联系人共享
  18. django-simple-sso, django-auth-ldap, python-ldap 单点登录(一)
  19. 基于python管理系统论文_基于Python语言的实验室管理系统的设计与实现
  20. 分享一个ip反查域名的网站

热门文章

  1. 修改mongodb最大查询数_mongodb数据库如何查询某个字段的最大值?
  2. 操作手册模板_挂蓝悬臂浇筑箱梁施工技术操作手册
  3. KMP算法总结+Next数组+Nextval数组
  4. Batch入门教程(1)
  5. 计算机学术英语常见词汇短语总结
  6. 第 20 次 CSP认证 202009-2 风险人群筛查
  7. ~~朴素筛法求素数(附模板题)
  8. ORB-SLMA3的学习笔记
  9. Jupyter Lab——如何在 Jupyter Lab调用相对路径的文件夹中的类
  10. 为什么单片机的代码在Flash中运行,单片机的代码运行位置跟电脑有什么不同?