fortran - 将 gfortran 链接到 LAPACK 和 BLAS 时出错

标签 fortran gfortran lapack blas

我已经从 Ubuntu 中的 Synaptic 包管理器安装了 LAPACK 和 BLAS。

whereis libblas
libblas: /usr/lib/libblas.so /usr/lib/libblas.a /usr/lib/libblas

whereis liblapack
liblapack: /usr/lib/liblapack.a /usr/lib/liblapack.so

当我尝试编译 randomsys1 example 时与 gfortran我收到以下错误消息。
gfortran randomsys1.f90 -L/usr/lib/lapack -llapack -L/usr/lib/libblas -lblas
/tmp/cclwtifh.o: In function `MAIN__':
randomsys1.f90:(.text+0x12): undefined reference to `init_random_seed_'
collect2: error: ld returned 1 exit status

或者
gfortran randomsys1.f90 -llapack -lblas
/tmp/ccB1isEC.o: In function `MAIN__':
randomsys1.f90:(.text+0x12): undefined reference to `init_random_seed_'
collect2: error: ld returned 1 exit status

根据我的理解,这是推荐的链接方式 gfortranlapackblas (请参阅 gfortran LAPACK “undefined reference” error )。提前感谢您指出编译 fortran 的正确方法代码使用 gfortran .

最佳答案

试试这个

gfortran randomsys1.f90 -L/usr/lib -llapack -L/usr/lib -lblas

我认为你走得太远了一个目录

我使用 LAPACK eigensolver 编写了一个程序,这是我在自己的计算机上成功编译它的方法。它用于计算 Spring 质量系统的模式。
gfortran eigen.f90 -L/usr/local/lib -lblas -L/usr/local/lib -llapack

这也适用于我的电脑
gfortran eigen.f90 -lblas -llapack

我只是尝试了两者来验证。

PS,既然您知道如何编译,我认为您需要在程序中使用子例程 init_random_seed (在“包含”之后但在“结束程序”之前)。这个来自谷歌。不知道这是否是您需要的,您的教授应该能够正确引导您。
! Initialize the random number generator using current time,
! so a new sequence of random numbers is generated each 
! execution time.

! Taken from http://gcc.gnu.org/onlinedocs/gfortran/RANDOM_005fSEED.html

    SUBROUTINE init_random_seed()
        INTEGER :: i, n, clock
        INTEGER, DIMENSION(:), ALLOCATABLE :: seed

        CALL RANDOM_SEED(size = n)
        ALLOCATE(seed(n))

        CALL SYSTEM_CLOCK(COUNT=clock)

        seed = clock + 37 * (/ (i - 1, i = 1, n) /)
        CALL RANDOM_SEED(PUT = seed)

        print *, "Using random seed = ", seed
        print *, " "

        DEALLOCATE(seed)
    END SUBROUTINE

关于fortran - 将 gfortran 链接到 LAPACK 和 BLAS 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007006/

相关文章:

python - 使用 Python 测试非 Python 代码

fortran - 在 Fortran 中,停止内在函数是否期望在标准输出中打印 'STOP'?

fortran - 以下 Fortran 'do concurrent' 循环有效吗?

cmake - 如何在 Windows 10 上安装适用于 Fortran 的 LAPACK

java - 在 java 中像在 .NET 中一样使用 lapack 库

fortran - 如果 OpenMP :. ..else 则打开 MP

compiler-errors - 英特尔 Fortran 错误 #6633 : The type of the actual argument differs from the type of the dummy argument

multithreading - 是否可以 “cross collapse”并行循环?

fortran - "Unknown"处于打开状态的默认状态

matrix - 求解受约束的线性方程组