无法(编译和)链接包含openMPI的多个f90程序

时间:2019-01-29 10:19:44

标签: ubuntu gfortran openmpi

我在编译几个包含openmpi的.f90程序时遇到问题。 尝试使用mpifort编译程序时,创建.o文件似乎没有问题,但是创建可执行文件失败。 “警告”是对»mpi_address_«»mpi_type_struct_«(仅这两个)的未定义引用。 我使用的makefile如下所示:

all:$(EXE)

%.o:%.f90 input_parameters.h
    $(FC) $(DFLAGS) $(FCFLAGS) -c  $< $(MPILNFLAGS) -o $@

$(EXE):$(OBJ) 
    $(FC) $(DFLAGS) $(FCFLAGS) $(MPILNFLAGS) -o  $(EXE) $(OBJ)

MPICFLAGS = $(shell mpifort --showme:compile)
MPILNFLAGS = $(shell mpifort --showme:link)

有人知道该怎么办?

PS:例如,一条mpifort行如下所示:

mpifort -D_MPI_ -I/usr/local/include -pthread -O3 -w  -g -c  file_name.f90 -pthread -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lmpi -o file_name.o

1 个答案:

答案 0 :(得分:0)

默认情况下,这些符号已从标准中删除,(偶然地)从Open MPI 4中删除。您可以使用--enable-mpi1compatibility重建Open MPI,等待4.0.1或更新代码(例如MPI_Get_address())。从长远来看,后一种选择是最好的(可能是唯一的一种)。