计算化学公社
标题:
如何一起编译 .mod 文件和 .o文件
[打印本页]
作者Author:
wulalalana
时间:
2020-11-24 12:35
标题:
如何一起编译 .mod 文件和 .o文件
我想先说明一下,我也不知道什么原因我在其他板块不能发帖,只有这一个板块可以发,如果有冒犯,还请大家谅解。
我的程序里面会有一个自带的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
作者Author:
wulalalana
时间:
2020-11-24 12:36
我刚刚才看到是因为我的等级不够不能发帖,冒昧了
作者Author:
wzkchem5
时间:
2020-11-24 15:12
你是怎么知道没编译进去的?具体报错是什么?
你的mod文件是怎么产生的?
作者Author:
snljty
时间:
2020-11-24 21:00
这个Linux下C语言编译器用gcc,Fortran却用ifort的,还是第一次见到...有什么理由非这么做不可么?
作者Author:
wulalalana
时间:
2020-11-27 14:45
snljty 发表于 2020-11-24 21:00
这个Linux下C语言编译器用gcc,Fortran却用ifort的,还是第一次见到...有什么理由非这么做不可么?
这个我也不清楚,makefile文件是程序自带的
作者Author:
beefly
时间:
2020-11-27 17:06
-J可以指定mod文件存放位置。可以令-I、-J后面的路径相同:-I$(OBJ) -J$(OBJ)
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3