计算化学公社

标题: 如何一起编译 .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