我需要帮助在 Linux gcc 中设置 LAPACK。我是 LAPACK 新手,不知道使用 Fortran。
我已经下载了 lapack-3.4.0,并制作了获取 liblapack.a 和 librefblas.a 的库。
之后,我将这些库链接到我的程序:-llapack -lrefblas
我想使用 dpotrf、dgetrf、dgetri 等 LAPACK 函数,如何包含头文件以便编译器找到函数?我有必要使用 lapacke,一个 LAPACK 的 C 接口吗?
有几种方法可以将 LAPACK 与 c++ 一起使用。这就是我要做的(假设你在一些 *nix 系统上)。
确保您拥有正确的库并且您知道正确的编译器/链接器选项集。由于这些是用 Fortran 编写的,我将从 Fortran 代码开始。喜欢这个。确保您可以使用gfortran
. 可能的链接器选项可以是(取决于您的系统):,-llapack
或-lblas
这些的某些组合。
然后继续使用 C++ 接口。同样,有多种做法。我个人认为使用 clapack 接口是最简单的,您可以在其中声明 LAPACK 函数,如下所示:
extern "C" void dsyev_( char *jobz, char *uplo, int &n, double *a, int &lda, double *w, double *work, int &lwork, int &info);
正确的链接器选项集再次取决于您的系统,可以是这样的:(-llapack -lf77blas -latlas
这组适用于我的 Ubuntu,其中 LAPACK 来自atlas
包)。