如何修改网站模版,wordpress命令安装目录结构,深圳制作网站公司哪里好,怎么选择网站建设我有一个编译时问题,我已经减少到以下测试用例.我希望从fortran调用一个C例程,让C例程知道MPI.请考虑以下示例代码,Fortran主要#xff1a;! -- main.f90program mainimplicit noneexternal return_threeinteger return_threewrite(*,*) return_three()end program mainC子程序…我有一个编译时问题,我已经减少到以下测试用例.我希望从fortran调用一个C例程,让C例程知道MPI.请考虑以下示例代码,Fortran主要! -- main.f90program mainimplicit noneexternal return_threeinteger return_threewrite(*,*) return_three()end program mainC子程序// -- subs.cpp#include extern C{int return_three_();}int return_three_(){return 3;}请注意,为了重现问题,我只需要包含mpi.h.使用GCC 5.3和OpenMPI 1.10.1进行编译(我也检查了GCC 4.8和PGI 15.10)在链接期间出现以下问题% mpic -c subs.cpp% mpifort -c main.f90% mpifort -o main subs.o main.o -lstdc -lgcc_ssubs.o: In function MPI::Intracomm::Intracomm():subs.cpp:(.text._ZN3MPI9IntracommC2Ev[_ZN3MPI9IntracommC5Ev]0x14): undefined reference to MPI::Comm::Comm()subs.o: In function MPI::Intracomm::Intracomm(ompi_communicator_t*):subs.cpp:(.text._ZN3MPI9IntracommC2EP19ompi_communicator_t[_ZN3MPI9IntracommC5EP19ompi_communicator_t]0x19): undefined reference to MPI::Comm::Comm()subs.o: In function MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype const), bool):subs.cpp:(.text._ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb[_ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb]0x24): undefined reference to ompi_mpi_cxx_op_interceptsubs.o:(.rodata._ZTVN3MPI3WinE[_ZTVN3MPI3WinE]0x48): undefined reference to MPI::Win::Free()subs.o:(.rodata._ZTVN3MPI8DatatypeE[_ZTVN3MPI8DatatypeE]0x78): undefined reference to MPI::Datatype::Free()collect2: error: ld returned 1 exit status在我看来,像mpifort缺少一些C相关的库.据我所知,mpifort应该用于编译fortran主程序.针对OpenMPI 1.10.1编译的Intel 16.0不会出现此问题.我的问题是这里发生了什么为什么英特尔能够处理这个示例代码而PGI / GCC不能处理有没有一种可移植的方法在Fortran代码中包含带有MPI的C子程序(如果可能)有一种简单的方法可以解决我目前的问题吗我正在尝试在我的机器上编译一个包,所以如果我可以添加-lmagicfix或其他东西最好.解决方法:通过在最后一步添加-lmpi_cxx,我能够使用GCC 5.3.0和openMPI 1.10.2编译代码% mpic -c subs.cpp% mpifort -c main.f90% mpifort -o main main.o subs.o -lstdc -lmpi_cxx原因是openMPI包装器编译器mpifort和mpic链接到不同的MPI库.您可以使用-showmelibs选项进行检查% mpifort -showme:libsmpi_usempif08 mpi_usempi_ignore_tkr mpi_mpifh mpi% mpic -showme:libsmpi_cxx mpi因此,为了使用C MPI库,您必须明确告诉mpifort链接到它.标签openmpi,c,gcc,fortran来源 https://codeday.me/bug/20190824/1706239.html