-1

FORTRAN 77 プログラムで BLAS を動作させようとしていますが、これまでのところうまくいきませんでした。参考までに、Ubuntu 12.10でこれを行っています。

これは私がコンパイルしようとしているプログラムのコードです:

program blastest
  implicit none
  include 'cblas_f77.h'

end

ファイルcblas_f77.hは にあり、 にはと(およびその他の BLAS 関連ファイルの束) の/usr/include両方があります。libblas.alibblas.so/usr/lib

これが正しく機能するようにどのように構成しますか?

これまでのところ、次のことを試しました。

注:-lblasどちらのオプションに追加しても、まったく違いはありません...

ただf77、オプションはありません(これがうまくいくとは思っていませんでしたが、一体何...):

 $ f77 blastest.f -o blastest
    MAIN blastest:
Cannot open file cblas_f77.h
/usr/bin/f77: aborting compilation

f77ヘッダー ファイルを検索するための include オプションを使用します。現在、代わりに(ファイル名にもかかわらず)FORTRAN 77を念頭に置いてコーディングされていないため、最初の6列は空ではありません...

$ f77 blastest.f -o blastest -I/usr/include
       MAIN blastest:
    Error on line 1 of /usr/include/cblas_f77.h: nondigit in statement label field "/*   "
    Error on line 2 of /usr/include/cblas_f77.h: labeled continuation line (starts " * cbl")
    Error on line 3 of /usr/include/cblas_f77.h: labeled continuation line (starts " * Wri")
    ...

完全な出力: http://pastebin.com/eZBzh9N5

に切り替えgfortran、ヘッダー ファイルのスペースをより柔軟に使用できるようにします。

$ gfortran blastest.f -o blastest -I/usr/include
   Warning: cblas_f77.h:9: Illegal preprocessor directive
   Warning: cblas_f77.h:10: Illegal preprocessor directive
   Warning: cblas_f77.h:12: Illegal preprocessor directive
   ...

完全な出力: http://pastebin.com/P71Di9pR

OK、-cppプリプロセッサを機能させる必要があると思いました。上記とまったく同じ出力が得られました。また、読み続けると、完全な出力が表示されますが、コンパイラはラベル付きの継続行についてまだ不平を言っています...

4

1 に答える 1

0

C ライブラリ「cblas」を使用していると思います。次のコマンドで再コンパイルします。

gfortran blastest.f -o blastest -L/usr/lib -lblas

これですべてが解決するはずです。「include」ステートメントを使用する必要があるとは思いません (よくわかりませんが)。

于 2013-03-29T20:44:19.843 に答える