/usr/lib/libblas.so.3: неопределенный символ: gotoblas

Я работаю над удаленной машиной через ssh и не имею sudo полномочий. В настоящее время я пытаюсь выполнить проект Python, который импортирует платформу криса. Из-за старой версии openblas я был вынужден вручную скомпилировать текущую версию 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

Поскольку Вы видите, что нет никакого "gotoblas", определенного во вручную установленной openblas версии. По этой причине исключение в заголовке выдается. На моем персональном компьютере я получаю следующий вывод:

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
3
задан 4 September 2019 в 12:12

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>

Я не попробовал... сообщенный мне, если это работает.

1
ответ дан 1 December 2019 в 17:31

Другие вопросы по тегам:

Похожие вопросы: