UNIX 環境では、 伝統的に Fortran プログラムと C プログラムが 相互にリンク可能なようになっている (非常に便利である)。 これは Fortran コンパイラー f77 と C コンパイラー cc の作る オブジェクト・コードと使用する実行時ライブラリィに互換性があるためである。
GCC (GNU compiler collection) でも、 この伝統が維持されていて、 g77 (GNU 版 f77) と gcc (GNU 版 cc) を利用することで、 C プログラムから Fortran プログラム、 例えば LAPACK のサブルーチン呼び出しが実現できる。
後で紹介するプログラム testlapack3.c では、 以下のようにコンパイル・リンクする。
oyabun% gcc -c -O -I/usr/local/include testlapack3.c oyabun% g77 -o testlapack3 testlapack3.o -L/usr/local/lib -llapack -lblas -lmatrix |
LAPACK のライブラリィ・ファイル liblapack.a と、 下請けの BLAS のライブラリィ・ファイル libblas.a と、 お手製の matrix ライブラリィのライブラリィ・ファイル libmatrix.a は /usr/local/lib というディレクトリィにあるため、
C プログラムのコンパイルには gcc を使っているが、 リンクには g77 を使っているところが小さな工夫である (Fortran プログラムは、標準の C ライブラリィ以外のライブラリィを 必要とするため、gcc をオプションなしで使ったのでは必要なライブラリィが リンクされない。リンクを g77 に任せることでこの問題を気軽に 回避できる)。 もっともお手軽には
oyabun% g77 -O -I/usr/local/include -o testlapack3 testlapack3.c -L/usr/local/lib -llapack -lblas -lmatrix |
桂田 祐史