Невозможно установить связь с существующей библиотекой libopenblas.so.0 - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно использовать libpca в C ++, который зависит от Armadillo , который, в свою очередь, требует OpenBlas и lapack .

У меня возникли проблемы при установке / настройке этих зависимостей.

Я использую Red Hat 4.8.5-16 и хочу написать код и вызвать пакет в /my/dir/program/. У меня нет привилегии sudo.

Все эти пакеты загружаются и распаковываются в /my/dir/

Вот шаги, которые я выполнил:

1. to install OpenBlas
    /my/dir/OpenBLAS-0.2.20$  make
    /my/dir/OpenBLAS-0.2.20$  make PREFIX=/my/dir/program/
    <Step 1 is successful>

2. to install lapack
    /my/dir/lapack-3.8.0$ mv make.inc.example make.inc
    /my/dir/lapack-3.8.0$ make
    <Step 2 is successful>

3. to install Armadillo
    /my/dir/armadillo-8.500.0$ cmake . -DCMAKE_INSTALL_PREFIX:PATH=/my/dir/pgrogram/
    /my/dir/armadillo-8.500.0$ make
    /my/dir/armadillo-8.500.0$ make install
    <Step 3 is successful>

4. to compile the example code
    /my/dir/armadillo-8.500.0$ cp examples/example1.cpp /my/dir/program
    /my/dir/program$ export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64/:../OpenBLAS-0.2.20/:../armadillo-8.500.0/:./lib/:./lib64/:$LD_LIBRARY_PATH ;
    /my/dir/program$ g++ example1.cpp -o example1 -O2 -I./include -L./lib -L./lib64 -L../lapack-3.8.0 -L../OpenBLAS-0.2.20 -larmadillo -lopenblas -llapack  ;
    <There is no warning or error in compiling>

5. to run the example code
    /my/dir/program$ export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64/:../OpenBLAS-0.2.20/:../armadillo-8.500.0/:./lib/:./lib64/:$LD_LIBRARY_PATH ;
    /my/dir/program$ ./example1

Возвращает

. / Example1: ошибка при загрузке общих библиотек: libopenblas.so.0: невозможно открыть общий объектный файл: нет такого файла или каталога

На самом деле libopenblas.so.0 dll находится в ./lib/, и я уже добавил путь к DLL.

Так как у меня нет привилегий root, я не могу yum install openblas.x86_64 openblas-devel.x86_64, как предложено этой записью.

Что мне делать?

1 Ответ

0 голосов
/ 03 мая 2018

Для g ++ / ld найти libmkl_rt.so - это одно.

Запуск ./example1 - это новая ситуация: «Информация о местоположении» должна быть повторена →

export LD_LIBRARY_PATH=/opt/intel.. .. ...:$LD_LIBRARY_PATH && ./example1

Обратите внимание, что команда export является временной: действительна только для текущего сеанса оболочки. При выходе из оболочки команда отменяется.

...