计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4354|回复 Reply: 5
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] 如何一起编译 .mod 文件和 .o文件

[复制链接 Copy URL]

66

帖子

0

威望

201

eV
积分
267

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
我想先说明一下,我也不知道什么原因我在其他板块不能发帖,只有这一个板块可以发,如果有冒犯,还请大家谅解。
我的程序里面会有一个自带的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

66

帖子

0

威望

201

eV
积分
267

Level 3 能力者

2#
 楼主 Author| 发表于 Post on 2020-11-24 12:36:14 | 只看该作者 Only view this author
我刚刚才看到是因为我的等级不够不能发帖,冒昧了

1万

帖子

0

威望

7406

eV
积分
18180

Level 6 (一方通行)

3#
发表于 Post on 2020-11-24 15:12:12 | 只看该作者 Only view this author
你是怎么知道没编译进去的?具体报错是什么?
你的mod文件是怎么产生的?
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

4#
发表于 Post on 2020-11-24 21:00:15 | 只看该作者 Only view this author
这个Linux下C语言编译器用gcc,Fortran却用ifort的,还是第一次见到...有什么理由非这么做不可么?

66

帖子

0

威望

201

eV
积分
267

Level 3 能力者

5#
 楼主 Author| 发表于 Post on 2020-11-27 14:45:20 | 只看该作者 Only view this author
snljty 发表于 2020-11-24 21:00
这个Linux下C语言编译器用gcc,Fortran却用ifort的,还是第一次见到...有什么理由非这么做不可么?

这个我也不清楚,makefile文件是程序自带的

689

帖子

21

威望

5019

eV
积分
6128

Level 6 (一方通行)

6#
发表于 Post on 2020-11-27 17:06:34 | 只看该作者 Only view this author
-J可以指定mod文件存放位置。可以令-I、-J后面的路径相同:-I$(OBJ) -J$(OBJ)

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 17:32 , Processed in 0.803518 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list