1

我正在用 mpif90 编译一个第三方软件,在我的例子中是 gcc 的 mpi 版本。该软件包带有一个生成文件。编译目标文件后,makefile 使用 ar 创建存档,但由于没有输入目标文件而失败。实际上,我尝试使用手动编译目标文件(.o)

mpif90 -lmkl_gf -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -openmp -O3  -DMPI -c a.f90

并且没有创建 ao,而是创建了一个 .mod 文件。我对fortran没有太多经验,我有点困惑,因为-c标志应该创建一个对象,不是吗?

如果我删除标志 openmp,我已经验证 gfortran 确实会创建目标文件


笔记:

mpif90 -v
gcc version 4.4.3

操作系统:Ubuntu 10.04.4 LTS

4

2 回答 2

1

我将标志 openmp 更改为 fopenmp

http://gcc.gnu.org/onlinedocs/gfortran/OpenMP.html

于 2013-04-18T09:41:14.730 回答
0

万一将来有人遇到这个问题...... OP 使用的标志特定于 intel fortran 编译器,而 mpif90 包装器似乎正在使用 gfortran 编译器。将 OpenMP 与 gfortran 一起使用的正确标志是 -fopenmp,而库是 -lgomp。可以将英特尔库与不同供应商的编译器一起使用,但最容易坚持使用一个供应商。

于 2014-04-16T05:19:21.497 回答