Fortran이 C 함수를 호출할 수 있는 환경

Fortran이 C 함수를 호출할 수 있는 환경

새로 설치된 Centos 7 시스템에 WRF(Large Atmosphere Model)를 설치하려고 합니다.

설치 프로세스를 시작하기 위해 모델 개발자는 일련의 환경 테스트를 수행했습니다. 항목 4 - 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.

포트란을 실행하려고 하면 다음과 같은 결과 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을 설치하여 모든 것이 "즉시" 작동하도록 했습니다.

관련 정보