我在编译几个包含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
答案 0 :(得分:0)
默认情况下,这些符号已从标准中删除,(偶然地)从Open MPI 4中删除。您可以使用--enable-mpi1compatibility
重建Open MPI,等待4.0.1或更新代码(例如MPI_Get_address()
)。从长远来看,后一种选择是最好的(可能是唯一的一种)。