无法链接到现有的libopenblas.so.0 DLL

时间:2018-05-03 06:13:12

标签: c++ linux dll shared-libraries

我需要在C ++中使用libpca,这取决于Armadillo,后者又需要OpenBlaslapack

我在安装/配置这些依赖项时遇到了一些问题。

我正在使用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权限,因此this帖子建议我不能yum install openblas.x86_64 openblas-devel.x86_64

我该怎么办?

1 个答案:

答案 0 :(得分:0)

对于g ++ / ld来查找libmkl_rt.so是一回事。

运行./example1是一种新情况:必须重复“位置信息”→

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

请注意 export 命令是临时的:仅对当前shell会话有效。退出shell时,命令将被取消。