我有一个Fortran代码(pardiso_1.f),需要编译一些库(BLAS,lapack和Pardiso库)。 当我尝试编译它时,我编译之前链接库,我在linuxterminal写这行:
gfortran pardiso_1.f -L/home/behnam/Pardiso -lpardiso412-GNU450-X86-64 -L/usr/lib -lblas -llapack -fopenmp
它完美的作品。
不过,我必须使用makefile运行代码。 我在编写makefiles方面是如此的新颖,我不知道怎么做。 我已经写了这个makefile。 任何人都可以帮助我找出什么是错的?
FC = gfortran OPT = -O2 PROGRAMS = pardiso_1 all: $(PROGRAMS) FFLAGS = -fopenmp #### BLAS, LAPACK and PTHREAD libraries LBLAS = /usr/lib/ ###location of pardiso file LIBMKL = /home/behnam/PS2/ #### Series of libraries LIBRARIES= -llapack -lblas -lpthread -lm -lpardiso412-GNU430-X86-64 PATHFC = /usr/bin/ nlace: ${PATHFC}${FC} ${OPT} ${FFLAGS} -I${PROGRAMS} -o nlace.exe \ -L${LIBMKL} -lpardiso412-GNU430-X86-64\ -L${LBLAS} ${LIBRARIES} clean: rm -f *.o *.exe fort.* *~ *.mod veryclean: clean rm -f *~ $(PROGRAMS)
错误是:
behnam@meen-392430:~/testing$ make make: Warning: File `Makefile' has modification time 23 s in the future gfortran -fopenmp pardiso_1.f -o pardiso_1 /tmp/ccYNexaH.o: In function `MAIN__': pardiso_1.f:(.text+0xb3): undefined reference to `pardisoinit_' pardiso_1.f:(.text+0x2ae): undefined reference to `pardiso_chkmatrix_' pardiso_1.f:(.text+0x36e): undefined reference to `pardiso_chkvec_' pardiso_1.f:(.text+0x44c): undefined reference to `pardiso_printstats_' pardiso_1.f:(.text+0x5ae): undefined reference to `pardiso_' pardiso_1.f:(.text+0x860): undefined reference to `pardiso_' pardiso_1.f:(.text+0xb78): undefined reference to `pardiso_' pardiso_1.f:(.text+0xe00): undefined reference to `pardiso_' collect2: ld returned 1 exit status make: *** [pardiso_1] Error 1
您的makefile不包含命令行中的-L/home/behnam/Pardiso
部分。
您的PROGRAMS
规则不包含包含库调用的配方。 我认为你想要的东西像你的nlace
规则,但是现在,make不会把你的-L
开关中的任何一个作为其操作的一部分。