새로 설치된 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을 설치하여 모든 것이 "즉시" 작동하도록 했습니다.