带有BLAS的Fortran 77 - 无法弄清楚如何编译

时间:2013-03-29 18:29:52

标签: compilation blas fortran77

我正在努力让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(以及一堆其他BLAS相关文件)。

如何将其配置为正常工作?

到目前为止,我已尝试过以下内容:

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

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

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

f77使用include选项查找头文件。现在,它失败了(尽管文件名)没有用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让预处理器正常工作。这给出了与上面完全相同的输出。此外,如果你继续阅读你看到完整的输出,编译器仍然抱怨标记的延续线进一步向下...

1 个答案:

答案 0 :(得分:0)

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

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

这应该整理出来。我不相信(虽然我不确定)你需要使用“包含”声明。