2016-01-27 4 views
2

Я почти новичок в использовании библиотек mkl. Так что извините меня, если это кажется глупым. Я попытался запустить пример в учебнике [here] с ifort -mkl dgemm_example.f, а затем запустить исполняемый файл. Вот ошибка:с использованием mkl, ошибка при загрузке разделяемых библиотек: libmkl_intel_lp64.so

./a.out: error while loading shared libraries: libmkl_intel_lp64.so: cannot open shared object file: No such file or directory 

Я также искал аналогичные проблемы, но это сбивало меня с толку. у вас есть идеи? dgemm_example.f

+0

Как вы инициализируете компилятор Intel? Вы отправили compilervars.sh? –

+0

Да, я сделал: Он дает мне: ОШИБКА: Неизвестный переключатель ''. Принятые значения: ia32, intel64 – Abolfazl

+0

теперь я получаю эту ошибку после источника, которая: './a.out: ошибка при загрузке разделяемых библиотек: libiomp5.so: невозможно открыть файл общих объектов: нет такого файла или каталога ' – Abolfazl

ответ

1

Необходимо установить переменную среды LD_LIBRARY_PATH, в противном случае общая библиотека не будет найдена во время выполнения.

Перед запуском программы введите export LD_LIBRARY_PATH=/path/to/your/library/directory в оболочке (bash), в которой вы хотите запустить свой код.

Если вы используете Ubuntu, вы можете установить эту переменную автоматически, используя файлы конфигурации в /etc/ld.so.conf.d/, см. Ubuntu help. Аналогичные механизмы доступны для других распределений.

+0

Обычно это делается с помощью сценария конфигурации, на который я ссылаюсь. –

+0

Я уже скопировал это в моем .bashrc файле: 'export LD_LIBRARY_PATH =/opt/intel/composer_xe_2013.2.146/mkl/lib/intel64 /: $ LD_LIBRARY_PATH '.Это linux Mint – Abolfazl

+0

Да, извините Владимир, я не прочитал ваш комментарий, когда я набрал ответ. – Figaro

0

Я скопировал адрес libiomp5 в /etc/ld.so.conf.d/icc.conf и использовал sudo ldconfig.

Существует еще один способ, что каждый раз, когда мы должны использовать этот флаг: -Wl,-rpath=/opt/intel/directory/to/library/directory

, и она работала.

0

Я использую CentOS на наших рабочих станциях. Добавление следующих строк в bashrc работало для меня.

export PATH="$PATH:/opt/intel/bin" 

export LD_LIBRARY_PATH="$PATH:opt/intel/mkl/lib/intel64_lin/" 
0

Я использую компилятор CentOS и intel. Тип
locate compilervars.sh

Перейти к файлу '.bashrc' и добавить

source /adress you got from locate command/compilervars.sh intel64 

Тогда в терминале типа
source ~/.bashrc

Это будет исправить ошибку.

+0

И если не установлено 'locate' или доступно более одного' compilervars.sh' или пользователь не находится в оболочке bash? – francescalus

+0

Вы можете установить 'locate' из репозитория, я думаю. Я не знаю, как бороться с несколькими проблемами 'compilervars.sh'. Возможно, он может попробовать использовать все доступные адреса или выбрать интуитивно. Я новичок во всех этих вещах, но я пытаюсь предложить, что я сделал, чтобы исправить эту ошибку. Надеюсь, поможет. – Chemist

Смежные вопросы