前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安装dlib成功但import时显示undefined symbol:cblas_ddot

安装dlib成功但import时显示undefined symbol:cblas_ddot

作者头像
Cloudox
发布2021-11-23 14:24:39
1K0
发布2021-11-23 14:24:39
举报
文章被收录于专栏:月亮与二进制

在虚拟机centOS 7上安装dlib,安装结束显示Successfully了,但是进入python后import dlib却提示“undefined symbol:cblas_ddot”。

网上搜了很久基本没什么对应的解决方案,dlib的github中有一个issue是类似的问题:https://github.com/davisking/dlib/issues/154,但是跟我的请情况也不太一样。

使用yum安装blas和lapack也没用,可能是因为我是用python3安装的dlib,而yum对应的是python2。于是参考一些资料自己动手编译安装blas、cblas和lapack,安装完成后依然提示此错误。

在安装dlib过程中,程序会检测blas是否能找到,提示的是“Found CBLAS LIBRARY”、“Found LAPACK LIBRARY”,但是依然提示“BLAS library does not have cblas symbols, so dlib will not use BLAS or LAPACK”。

根据上面github的issue,查看dlib源代码中的 .dlib/dlib/cmake_utils/cmake_find_blas.txt 文件,该文件就是检查BLAS环境的代码,查看代码可以发现,其尝试从多种方法查找系统的的BLAS库,在我的情况中,该代码找到了CBLAS,然后进行进一步检测是否有 cblas_ddot 时没找到,我的用CBLAS中明明有cblas_ddot,且在终端用命名“locate cblas_ddot”也可以找到,不知道为什么程序就是找不到。

程序找到了CBLAS
程序找到了CBLAS
程序没找到cblas_ddot
程序没找到cblas_ddot

从上图的代码中可以看到程序的执行过程,总之不知道为什么找不到。

后来发现程序会检查openblas,也就是说如果安装openblas也应该有用:

程序会检查openblas
程序会检查openblas

抱着死马当活马医的心态试了试安装openblas,步骤是:

  1. www.openblas.net下载tar压缩包
  2. 解压后从命令号进入文件夹,执行“make”命令进行编译,这一步需要一些时间
  3. 编译完后执行“make install”命令进行安装

安装完openblas后再执行dlib的安装,发现不再提示“BLAS library does not have cblas symbols, so dlib will not use BLAS or LAPACK”了。安装完毕后进入python3,import dlib,成功!

其实import时还不是直接成功,依然提示“libopenblas.so.0 cannot open shared object file: No such file or directory”。

不过没关系,针对这种情况,我们已经遇到过一次,知道解决方案了:解决方案,这类问题的解决方案都差不多。解决后就可以成功使用dlib了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/1/16 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档