/usr/lib/libblas.so.3:未定义符号:gotoblas

/usr/lib/libblas.so.3:未定义符号:gotoblas

我正在通过远程机器工作远程控制没有 sudo 权限。目前,我正在尝试运行一个导入 keras 框架的 python 项目。由于开放布拉斯我被迫通过克隆来手动编译当前版本的 Openblas项目。虽然 Keras 不再为旧库而苦恼,但当 Python 遇到以下行时,又出现了一个新问题:

from sklearn.model_selection import GridSearchCV

我收到错误/usr/lib/libblas.so.3: undefined symbol: gotoblas

存在一些类似的问题,但libopenblas-base由于缺少 sudo 权限,我无法按照某些解决方案中的建议简单地删除。

我想我能找出问题的根源所在。

readelf -Ws /home/me/lib/lib/libopenblas.so.0 | grep gotoblas
  1019: 0000000000283b20   256 FUNC    GLOBAL DEFAULT   11 gotoblas_pthread
  2556: 000000000007f200    29 FUNC    GLOBAL DEFAULT   11 gotoblas_quit
  2576: 000000000007f220    76 FUNC    GLOBAL DEFAULT   11 gotoblas_init
  2597: 0000000000faffd0     4 OBJECT  LOCAL  DEFAULT   24 gotoblas_initialized
  9916: 0000000000283b20   256 FUNC    GLOBAL DEFAULT   11 gotoblas_pthread
 10873: 000000000007f220    76 FUNC    GLOBAL DEFAULT   11 gotoblas_init
 13330: 000000000007f200    29 FUNC    GLOBAL DEFAULT   11 gotoblas_quit

如您所见,手动安装的 openblas 版本中没有定义“gotoblas”。因此,标题中的异常被抛出。在我的个人电脑上,我得到以下输出:

readelf -Ws /usr/lib/libopenblas.so.0 | grep gotoblas
  ....
  6146: 0000000002089d30     8 OBJECT  GLOBAL DEFAULT   25 gotoblas
  6779: 000000000206c240  3992 OBJECT  GLOBAL DEFAULT   24 gotoblas_DUNNINGTON
  ....

就是这样!有人能解释一下如何手动安装 OpenBlas 以避免出现上述错误吗?显然,手动编译 OpenBlas 时只安装了一小部分。其目录包含以下文件:

ls /home/me/lib/lib/
cmake  libopenblas.a  libopenblas.so  libopenblas.so.0  libopenblas_sandybridgep-r0.2.19.a  libopenblas_sandybridgep-r0.2.19.so

答案1

也许您有两个版本的 libblas。您可以尝试选择系统中安装的另一个库,如下所示:

update-alternatives --config libblas.so.3 
update-alternatives --config liblapack.so.3

但是如果您没有权限,您将必须更改.bashrc 文件并修改 LD_LIBRARY_PATH 以及可能的 PYTHONPATH 环境变量。

尝试:

locate libbas.so.3

要查看系统中是否有此库的更多版本,请使用其路径并将其附加到您的 .bashrc 中,如下所示:

export LD_LIBRARY_PATH=<your library path, without file name>:$LD_LIBRARY_PATH
export LD_PRELOAD=<your library path>

我没有尝试过...如果有效请告诉我。

相关内容