ld:找不到 -lmpif(即使库已链接)
ld: cannot find -lmpif (even though library is linked)
我知道很多人都问过类似的问题,但我找不到适合我的答案。我正在尝试编译并最终 运行 一个依赖于 mpi 库的名为 zeus-mp 的程序。我只是按照代码随附的说明进行操作,并编辑了 make 文件以反映我尝试 运行 它所在的系统。当我 运行 make all
我得到以下输出。
ifort -O2 -msse2 -I/usr/include/mpi -I/hpcwarwick/ompi/1.4.5/intel/12.1/include -o ../exe/zeusmp.x advx1.o advx2.o advx3.o avisc.o avisc_d.o bndyflgs.o bval3d.o bvalemf.o clocks.o ct.o dataio.o diverg.o empty.o findno.o forces.o forces_d.o fourn.o ggen.o grdv.o hdfall.o hsmoc.o intchk.o lorentz.o lorentz_d.o maxmin.o mnmx.o momx1.o momx2.o momx3.o movie.o msave2.o mget2.o mstart.o newdt.o newgrid.o newvg.o newx1.o newx2.o nudt.o pdv.o pdv_d.o pressure.o printd.o restart.o setup.o spenergy.o srcstep.o strtoi.o transprt.o tranx1.o tranx2.o tranx3.o tslice.o zeusmp.o writeout.o textdmp.o linpck.o debug.o rad_loss.o kin_visc.o tconduct.o modulo.o pnewt.o nantest.o box.o bcdflt.o checkin.o mmIsFinite.o mmIsNan.o -L/usr/lib64 - L/usr/lib/mpi/lib -L/hpcwarwick/ompi/1.4.5/intel/12.1/lib - L/storage/home/maths/marxzq/HDF4/hdf4lib/lib -ldl -lnsl -lutil -lmfhdf - ldf -lmpi -lmpif -lpthread
ld: cannot find -lmpif
make: *** [../exe/zeusmp.x] Error 1
文件 mpif.h 位于目录 /hpcwarwick/ompi/1.4.5/intel/12.1/include 中,我相信我已正确链接。我什至尝试将 mpif.h 移动到 make 为 运行 的目录中,但同样的错误也失败了。如果有人能提供帮助,我将不胜感激,在此先感谢。
复制到正确答案的评论中的最终解决方案:
您需要一个特定于您的集群的包装器,它将为您处理适当的 MPI 库。这些包装器通常被称为 mpif77
、mpif90
等,在 HPC Warwick 似乎被称为 mpifort
.
我知道很多人都问过类似的问题,但我找不到适合我的答案。我正在尝试编译并最终 运行 一个依赖于 mpi 库的名为 zeus-mp 的程序。我只是按照代码随附的说明进行操作,并编辑了 make 文件以反映我尝试 运行 它所在的系统。当我 运行 make all
我得到以下输出。
ifort -O2 -msse2 -I/usr/include/mpi -I/hpcwarwick/ompi/1.4.5/intel/12.1/include -o ../exe/zeusmp.x advx1.o advx2.o advx3.o avisc.o avisc_d.o bndyflgs.o bval3d.o bvalemf.o clocks.o ct.o dataio.o diverg.o empty.o findno.o forces.o forces_d.o fourn.o ggen.o grdv.o hdfall.o hsmoc.o intchk.o lorentz.o lorentz_d.o maxmin.o mnmx.o momx1.o momx2.o momx3.o movie.o msave2.o mget2.o mstart.o newdt.o newgrid.o newvg.o newx1.o newx2.o nudt.o pdv.o pdv_d.o pressure.o printd.o restart.o setup.o spenergy.o srcstep.o strtoi.o transprt.o tranx1.o tranx2.o tranx3.o tslice.o zeusmp.o writeout.o textdmp.o linpck.o debug.o rad_loss.o kin_visc.o tconduct.o modulo.o pnewt.o nantest.o box.o bcdflt.o checkin.o mmIsFinite.o mmIsNan.o -L/usr/lib64 - L/usr/lib/mpi/lib -L/hpcwarwick/ompi/1.4.5/intel/12.1/lib - L/storage/home/maths/marxzq/HDF4/hdf4lib/lib -ldl -lnsl -lutil -lmfhdf - ldf -lmpi -lmpif -lpthread
ld: cannot find -lmpif
make: *** [../exe/zeusmp.x] Error 1
文件 mpif.h 位于目录 /hpcwarwick/ompi/1.4.5/intel/12.1/include 中,我相信我已正确链接。我什至尝试将 mpif.h 移动到 make 为 运行 的目录中,但同样的错误也失败了。如果有人能提供帮助,我将不胜感激,在此先感谢。
复制到正确答案的评论中的最终解决方案:
您需要一个特定于您的集群的包装器,它将为您处理适当的 MPI 库。这些包装器通常被称为 mpif77
、mpif90
等,在 HPC Warwick 似乎被称为 mpifort
.