我正在使用mpif90编译第三方软件,在我的例子中是gcc的mpi版本。该软件包附带一个makefile。编译目标文件后,makefile使用ar创建存档,但由于没有输入目标文件,因此失败。实际上,我试图用
手动编译目标文件(.o)mpif90 -lmkl_gf -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -openmp -O3 -DMPI -c a.f90
并且未创建a.o,而是创建.mod文件。我对fortran没有多少经验,我有点困惑,因为-c标志应该创建一个对象,不应该吗?
我已经验证gfortran确实会创建目标文件,如果我删除了标志openmp
注意:
mpif90 -v
gcc version 4.4.3
操作系统:Ubuntu 10.04.4 LTS
答案 0 :(得分:1)
我将旗帜openmp改为fopenmp
答案 1 :(得分:0)
如果有人在将来遇到这个问题... OP使用的标志特定于intel fortran编译器,而mpif90包装器似乎正在使用gfortran编译器。使用OpenMP和gfortran的正确标志是-fopenmp,库是-lgomp。可以将intel库与不同的供应商编译器一起使用,但最容易与一个供应商合作。