我正在尝试在我新设置的 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,所以一切都是“开箱即用”。