-1

我试图让 BLAS 在 FORTRAN 77 程序中工作,但到目前为止我一直没有成功,我不知道如何开始。作为参考,我在 Ubuntu 12.10 下执行此操作。

这是我要编译的程序的代码:

program blastest
  implicit none
  include 'cblas_f77.h'

end

该文件cblas_f77.h位于 中/usr/includelibblas.a并且libblas.so/usr/lib.

您如何配置它以使其正常工作?

到目前为止,我已经尝试了以下方法:

注意:添加-lblas到任何一个选项都没有任何区别......

只是f77,没有选择(真的没想到这会起作用,但到底是什么......):

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

f77使用包含选项来查找头文件。现在,它失败了(尽管文件名)没有考虑到 FORTRAN 77 编码,所以前六列是非空的......

$ 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

好的,所以我猜我需要-cpp让预处理器工作。这给出了与上面完全相同的输出。此外,如果您继续阅读,您会看到完整的输出,编译器仍在抱怨标记的延续线进一步向下......

4

1 回答 1

0

我相信您正在使用 C 库“cblas”。我会用这个命令重新编译:

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

and this should sort it all out. I do not believe (though i am not sure) that you need to make use of the "include" statement.

于 2013-03-29T20:44:19.843 回答