我试图让 BLAS 在 FORTRAN 77 程序中工作,但到目前为止我一直没有成功,我不知道如何开始。作为参考,我在 Ubuntu 12.10 下执行此操作。
这是我要编译的程序的代码:
program blastest
implicit none
include 'cblas_f77.h'
end
该文件cblas_f77.h
位于 中/usr/include
,libblas.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
让预处理器工作。这给出了与上面完全相同的输出。此外,如果您继续阅读,您会看到完整的输出,编译器仍在抱怨标记的延续线进一步向下......