$ OPENMP_FFLAGS无法在autoconf中工作

时间:2016-06-23 11:47:18

标签: fortran openmp gfortran autotools

我正在尝试使用gnu-autotools编译fortran代码。 configure.ac中的openmp特定行是:

AC_PROG_FC([gfortran])
AC_OPENMP
FCFLAGS="$OPENMP_FCFLAGS -fcheck=all"

如果我使用此编译,我没有得到omp相关的编译器选项,如autoconf manual中的AC_OPENMP宏所述。

如果我明确地将-fopenmp放在$OPENMP_FFLAGS的位置,那么它才能正常工作。

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

Autoconf通常喜欢默认测试C语言的所有内容,这就是$OPENMP_CFLAGS命令导致AC_OPENMP仅获得AC_LANG的原因。但是,Autoconf还提供了使用autoreconf -fiv命令更改编程语言(以及编译器)的机制(请查看Autoconf / Language Choice webpage以获取更多详细信息以及一些替代方案)。

使用命令autoconf 2.69并使用命令AC_INIT([omp-fortran-sample], [1.0]) AC_PROG_CC AC_PROG_FC([gfortran]) dnl Checks for OpenMP flag for C language, stores it in $OPENMP_CFLAGS AC_LANG(C) AC_OPENMP dnl Checks for OpenMP flag for Fortran language, stores it in $OPENMP_FCFLAGS AC_LANG(Fortran) AC_OPENMP AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile]) AC_OUTPUT (也使用空的Makefile.am文件)测试了以下代码。

checking for gcc option to support OpenMP... -fopenmp
checking for gfortran option to support OpenMP... -fopenmp

由此产生的configure执行显示了两个OpenMP测试,如下所示:

OPENMP_CFLAGS

Makefile现在包含OPENMP_FCFLAGS... MKDIR_P = /bin/mkdir -p OBJEXT = o OPENMP_CFLAGS = -fopenmp OPENMP_FCFLAGS = -fopenmp PACKAGE = omp-fortran-sample ... 定义,其余如下所示:

overflow:hidden