新しくインストールされたCentos 7システムにWRF(Large Atmosphere Model)をインストールしようとしています。
インストールプロセスを開始するために、モデル開発者は一連の環境テストを実施しました。項目 4 - Fortran が C 関数を呼び出すと設定が失敗しました。 (私は最初の3つ(固定形式と自由形式のFortranとCのみを通過しました。)
テストは2つの小さなプログラムで構成されています。
まず、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"でコンパイルすると、すべてがエラーなくうまくいきました。
2番目のプログラム、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をインストールして、すべてが「すぐに」動作するようにしました。