我想先说明一下,我也不知道什么原因我在其他板块不能发帖,只有这一个板块可以发,如果有冒犯,还请大家谅解。
我的程序里面会有一个自带的makefile 文件,但是在子程序里面有调用模块 (命令是 use PES),这里调用的是 pes.mod 文件,但是用makefile文件编译的时候并没有把 pes 程序编译进去,所以想请问大家怎么修改makefile文件 才能把调用的 .mod 文件也编译进去。 谢谢大家
下面是makefile文件:
SHELL = /bin/sh
CC = gcc
FC = ifort
LINEAR_ALGEBRA = MKL
#
# Intel MKL:
#
MKL_LIB=$(MKLROOT)/lib/intel64
MKL_INC=$(MKLROOT)/mkl/include
ifeq ($(FC), ifort)
LINEAR_ALGEBRA_LIB = -mkl=parallel -L$(MKL_LIB) -I$(MKL_INC) -Wl,--start-group $(MKL_LIB)/libmkl_intel_lp64.a $(MKL_LIB)/libmkl_intel_thread.a $(MKL_LIB)/libmkl_core.a $(MKL_LIB)/libmkl_blas95_lp64.a $(MKL_LIB)/libmkl_lapack95_lp64.a -Wl,--end-group -fopenmp -lpthread
endif
ifeq ($(FC), gfortran)
LINEAR_ALGEBRA_LIB = -Wl,--start-group $(MKL_LIB)/libmkl_gf_lp64.a $(MKL_LIB)/libmkl_sequential.a $(MKL_LIB)/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl
endif
#
# MAGMA library:
#
MAGMAROOT = /usr/local/magma
CUDAROOT = /usr/local/cuda
ifeq ($(LINEAR_ALGEBRA), MAGMA)
LINEAR_ALGEBRA_INC += -I$(CUDAROOT)/include -I$(MAGMAROOT)/include -DADD_
LINEAR_ALGEBRA_LIB += -L$(MAGMAROOT)/lib -L$(CUDAROOT)/lib64 -lmagma -lm
endif
#
# Rules:
#
all: abc link
use_magma: abc dgemm dsyev syminv dsyr link
abc:
$(FC) -O3 *.f90 -c
@echo
link:
$(FC) *.o -o abc.out $(LINEAR_ALGEBRA_LIB)
@echo
WRAPPERS_DIR = wrappers
dgemm: $(WRAPPERS_DIR)/dgemm.c $(WRAPPERS_DIR)/wrappers.h $(WRAPPERS_DIR)/c_lib.h
$(CC) -W -Wall -std=c99 -pedantic -O3 $(LINEAR_ALGEBRA_INC) -c $<
@echo
dsyev: $(WRAPPERS_DIR)/dsyev.c $(WRAPPERS_DIR)/wrappers.h $(WRAPPERS_DIR)/c_lib.h
$(CC) -W -Wall -std=c99 -pedantic -O3 $(LINEAR_ALGEBRA_INC) -c $<
@echo
syminv: $(WRAPPERS_DIR)/syminv.c $(WRAPPERS_DIR)/wrappers.h $(WRAPPERS_DIR)/c_lib.h
$(CC) -W -Wall -std=c99 -pedantic -O3 $(LINEAR_ALGEBRA_INC) -c $<
@echo
dsyr: $(WRAPPERS_DIR)/dsyr.c $(WRAPPERS_DIR)/wrappers.h $(WRAPPERS_DIR)/c_lib.h
$(CC) -W -Wall -std=c99 -pedantic -O3 $(LINEAR_ALGEBRA_INC) -c $<
@echo
clean:
rm -f *.o *.out