linker 找不到共享的 lapack 和 blas,但我正指向它

问题描述 投票:0回答:1

我正在尝试构建一个 .so 以便在运行时动态链接到 lapack 和 blas。构建时,链接器抱怨找不到 lapack 和 blas,但我正指向它们(我认为)。我还缺少什么?

我在 Rocky 9 Linux 系统上(全新安装)。除其他外,我做了

yum install gcc-gfortran lapack-3.9.0-8.el9.x86_64 compat-libgfortran-48-4.8.5-36.5.el9.x86_64 openblas-serial lapack scalapack-common
yum groupinstall "Development tools"
。其中一些是为了(成功地)让旧的二进制文件再次工作,但我将它们包括在内以防它们现在可能会产生干扰。使用
yum list
,我看不到任何其他有希望安装的东西。

/usr/lib64/
我看到(除其他外):

lrwxrwxrwx.  1 root root       18 May 25  2022 liblapack.so.3.9 -> liblapack.so.3.9.0*
lrwxrwxrwx.  1 root root       19 May 25  2022 liblapacke.so.3.9 -> liblapacke.so.3.9.0*
lrwxrwxrwx.  1 root root       19 May 25  2022 liblapacke.so.3 -> liblapacke.so.3.9.0*
-rwxr-xr-x.  1 root root  7496688 May 25  2022 liblapack.so.3.9.0*
-rwxr-xr-x.  1 root root  2908088 May 25  2022 liblapacke.so.3.9.0*
lrwxrwxrwx.  1 root root       18 Jan 18 16:18 liblapack.so.3 -> liblapack.so.3.9.0*
lrwxrwxrwx.  1 root root       22 May 16  2022 libopenblas.so.0 -> libopenblas-r0.3.15.so*
lrwxrwxrwx.  1 root root       23 May 16  2022 libopenblaso.so.0 -> libopenblaso-r0.3.15.so*
-rwxr-xr-x.  1 root root 38111888 May 16  2022 libopenblas-r0.3.15.so*
-rwxr-xr-x.  1 root root 39653512 May 16  2022 libopenblaso-r0.3.15.so*
lrwxrwxrwx.  1 root root       17 May 25  2022 libcblas.so.3.9 -> libcblas.so.3.9.0*
lrwxrwxrwx.  1 root root       16 May 25  2022 libblas.so.3.9 -> libblas.so.3.9.0*
-rwxr-xr-x.  1 root root   119640 May 25  2022 libcblas.so.3.9.0*
-rwxr-xr-x.  1 root root   583120 May 25  2022 libblas.so.3.9.0*
lrwxrwxrwx.  1 root root       19 Jun  2  2022 libflexiblas.so.3 -> libflexiblas.so.3.0*
lrwxrwxrwx.  1 root root       24 Jun  2  2022 libflexiblas_mgmt.so.3 -> libflexiblas_mgmt.so.3.0*
lrwxrwxrwx.  1 root root       23 Jun  2  2022 libflexiblas_api.so.3 -> libflexiblas_api.so.3.0*
-rwxr-xr-x.  1 root root  3870704 Jun  2  2022 libflexiblas.so.3.0*
-rwxr-xr-x.  1 root root    53256 Jun  2  2022 libflexiblas_mgmt.so.3.0*
-rwxr-xr-x.  1 root root    15912 Jun  2  2022 libflexiblas_api.so.3.0*
lrwxrwxrwx.  1 root root       17 Jan 18 16:18 libcblas.so.3 -> libcblas.so.3.9.0*
lrwxrwxrwx.  1 root root       16 Jan 18 16:18 libblas.so.3 -> libblas.so.3.9.0*

此外,

whereis liblapack.so
whereis libblas.so
都空手而归

按照我看到的here,我做了:

gcc -Wall -fPIC -O -g -fopenmp mylib.c -c -o mylib.pic.o
gcc -shared -fopenmp mylib.pic.o -L/usr/lib64 -lblas -llapack -lm -o mylib.so

但我明白了

/usr/bin/ld: cannot find -lblas
/usr/bin/ld: cannot find -llapack
collect2: error: ld returned 1 exit status

我知道this,但我必须进入系统目录并手动创建软链接才能使用标准基础设施,这似乎是错误的。必须有一个“正确”的解决方案我错过了。

感谢您的帮助。

linker shared-libraries lapack blas rocky-os
1个回答
0
投票

我正指向他们(我认为)。

不,你不是。你需要

libblas.so
,这和
libblas.so.3
不一样。

libblas.so
需要将新的二进制文件链接到
libblas
libblas.so.3
需要run 已经链接的二进制文件。

通常

.so
库作为
libblas-devel
或类似包的一部分安装。

© www.soinside.com 2019 - 2024. All rights reserved.