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



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

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
默认情况下,

这些符号已从标准中删除,并且(意外地)从 Open MPI 4 中删除。您可以使用 --enable-mpi1compatibility 重建 Open MPI,等待 4.0.1 或使您的代码现代化(例如 MPI_Get_address())。从长远来看,后一种选择是最好的(也可能是唯一的选择)。

最新更新