[英]Error in linking gfortran to LAPACK and 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
當我嘗試使用gfortran
編譯randomsys1示例時 ,我收到以下錯誤消息。
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
根據我的理解,這是建議的方法來鏈接gfortran
與lapack
和blas
(請參閱gfortran LAPACK“未定義的引用”錯誤 )。 提前感謝指出使用gfortran
編譯fortran
代碼的正確方法。
試一試
gfortran randomsys1.f90 -L/usr/lib -llapack -L/usr/lib -lblas
我覺得你走得太遠了一個目錄
我使用LAPACK eigensolver編寫了一個程序,這是我在自己的計算機上成功編譯它的方法。 它用於計算彈簧質量系統的模式。
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
我有同樣的問題。 我按照上面的建議工作了。 這是我的工作示例批處理文件(必須在cmd窗口中執行):
gfortran -c for\kurs_evd.f90
gfortran -o kurs_evd.exe kurs_evd.o charint.o -L/usr/lib -llapack -L/usr/lib -lblas
kurs_evd.exe
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.