FortranがC関数を呼び出すことができる環境

FortranがC関数を呼び出すことができる環境

新しくインストールされた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をインストールして、すべてが「すぐに」動作するようにしました。

関連情報