Связь с 2 библиотеками - PullRequest
       59

Связь с 2 библиотеками

0 голосов
/ 16 декабря 2018

Я пытаюсь связать программу с 2 библиотеками следующим образом:

LNOPT = -Wl,-rpath,$(MKLROOT)/lib/intel64  -Wl,-rpath,/opt/intel/compilers_and_libraries_2019.0.117/linux/compiler/lib/intel64_lin

Однако я получаю одну из следующих ошибок:

./dftb+: error while loading shared libraries: libmkl_gf_lp64.so: cannot open shared object file: No such file or directory

./dftb+: error while loading shared libraries: libiomp5.so: cannot open shared object file: No such file or directory

В зависимости от того, какой -rpath Iпоставить первым.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 18 декабря 2018

Опция установки обоих путей (разделенных :) в переменной среды LD_LIBRARY_PATH во время выполнения - это вариант?(Таким образом, жестко запрограммированный rpath не должен работать.) Пример:

LD_LIBRARY_PATH=$(MKLROOT)/lib/intel64:/opt/intel/compilers_and_libraries_2019.0.117/linux/compiler/lib/intel64_lin ./dftb+

Или поместите export LD_LIBRARY_PATH=$(MKLROOT)/lib/intel64:/opt/intel/compilers_and_libraries_2019.0.117/linux/compiler/lib/intel64_lin в некоторый файл профиля rc, чтобы всегда задавался путь к библиотеке.

В любом случае, если уже есть другие пути, которые необходимы в LD_LIBRARY_PATH, добавьте к нему выше через LD_LIBRARY_PATH=$(MKLROOT)/lib/intel64:/opt/intel/compilers_and_libraries_2019.0.117/linux/compiler/lib/intel64_lin:$LD_LIBRARY_PATH вместо того, чтобы просто полностью переопределить LD_LIBRARY_PATH.

Что может / должнотакже работает source с файлами настройки переменных среды .sh, которые поставляются вместе с компиляторами Intel и MKL, который, помимо других переменных, таких как MKLROOT, должен настроить LD_LIBRARY_PATH, указывающий как на libiomp5.so, так и на динамические библиотеки ссылок MKL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...