允许 Fortran 调用 C 函数的环境

允许 Fortran 调用 C 函数的环境

我正在尝试在我新设置的 Centos 7 机器上安装大型大气模型 (WRF)。

为了开始安装过程,模型开发人员进行了一系列环境测试。我的设置在第四项失败——Fortran 调用 C 函数。 (我通过了前三项:仅限固定格式和自由格式 Fortran 和 C。)

该测试由两个小程序组成。

首先,TEST_4_fortran+c_c.c:

::::::::::::::
TEST_4_fortran+c_c.c
::::::::::::::
#ifndef CRAY
# ifdef NOUNDERSCORE
#      define C_TEST c_test
# else
#   ifdef F2CSTYLE
#      define C_TEST c_test__
#   else
#      define C_TEST c_test_
#   endif
# endif
#endif
#include <stdio.h>

int C_TEST ( float *xx, int *ii )

{
 printf("   C function called by Fortran\n" ) ;
 printf("   Values are xx = %5.2f and ii = %d \n", *xx, *ii ) ;
 return(0) ;
}

编译它“gcc -c -m64 TEST_4_fortran+c_c.c”一切顺利,没有错误。

第二个程序,TEST_4_fortran+c_f.f90:

PROGRAM foo
   INTEGER :: ii
   REAL    :: xx

   ii = 1
   xx = 2

   CALL c_test ( xx , ii )

   print *,'SUCCESS test 4 fortran calling c'

END PROGRAM foo

编译gfortran -c -m64 TEST_4_fortran+c_f.f90也没有错误。

当我尝试执行 fortran 时,gfortran -m64 TEST_4_fortran+c_f.o我得到:

TEST_4_fortran+c_f.o: In function `MAIN__':
TEST_4_fortran+c_f.f90:(.text+0x2f): undefined reference to `c_test_'
collect2: error: ld returned 1 exit status

我刚刚安装了 Centos 7,所以一切都是“开箱即用”。

相关内容