使用Makefile编译时出现`undefined reference to MPI::Comm::Comm()`错误如何解决?
编译错误修复方案
错误根因
你的代码中C部分调用了MPI的C接口,但是Makefile配置里屏蔽了MPI C库的链接参数,且最终链接阶段使用Fortran的MPI编译器默认不会自动链接C MPI库,因此出现大量undefined reference报错。
第一步修改配置
打开你的Makefile.include文件,找到如下被注释的行:
#~ LFLAGS += -lmpi_cxx
删除行首的#~取消注释,修改后内容为:
LFLAGS += -lmpi_cxx
保存文件。
第二步重新编译
执行以下命令清理旧的编译产物,再重新编译:
make clean make
可选修复(上述操作无效时使用)
如果修改后仍然报错,打开Makefile文件,找到test_parallel_ij编译规则下的链接命令:
$(FC) $? -L. -lfmm $(LFLAGS)
将其中的$(FC)替换为$(CXX),修改后内容为:
$(CXX) $? -L. -lfmm $(LFLAGS)
保存后重新清理编译即可。
内容的提问来源于stack exchange,提问作者BideshSengupta
相关产品推荐
相关产品推荐

