我正在努力让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
(以及一堆其他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
让预处理器正常工作。这给出了与上面完全相同的输出。此外,如果你继续阅读你看到完整的输出,编译器仍然抱怨标记的延续线进一步向下...
答案 0 :(得分:0)
我相信您正在使用C库“cblas”。我会用这个命令重新编译:
gfortran blastest.f -o blastest -L/usr/lib -lblas
这应该整理出来。我不相信(虽然我不确定)你需要使用“包含”声明。