我正在尝试使用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
的位置,那么它才能正常工作。
请帮忙吗?
答案 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