更新
感谢Vladimir对图书馆的有用见解。我采取了另一种方法,首先在ubuntu中开发(这比使用Eclipse / Cygwin /更容易搞乱......现在我正在尝试移植到Windows,这相当不错,但是我对此也有一些疑问,发布在这里:Problems with porting a fortran program from ubuntu to windows
问题
我目前有以下设置,无法配置lapack库,以便我的fortran代码可以编译:
在我的程序中,我使用以下代码调用lapack库
program myProgram
!use lapack (stays commented now)
...
在Eclipse中,我使用了以下设置(使用Photran包):
gfortran ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
gfortran ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
我编译了库libblas.a和liblapack.a,用作Windows的静态库,它们位于C:/ cygwin / lib文件夹中。在GNU fortran链接器属性中,文件夹在lapack
文件夹中称为blas
和C:/cygwin/lib
。这会在编译器和链接器的-L"C:/cygwin/lib" -llapack -lblas
部分中生成部分{$COMMAND}
。 (感谢@ vladimir-f的帮助)
在输出中,不再有任何错误消息。现在我只在Eclipse中遇到以下错误,没有最终的.exe或bin:
Errors occured during the build.
Errors running builder 'CDT Builder' on project 'Hamfem'
Internal error building project Hamfem configuration
Release
java.lang.NullPointerException
Internal error building project Hamfem configuration
Release
java.lang.NullPointerException
但是,构建的结果仍然是可执行文件,在本例中称为Hamfem.exe。运行此文件会导致错误消息(而不是例程):The program can't start because cyglapack-0.dll is missing from your computer. Try reinstalling the program to fix this problem.
该文件当前位于C:/cygwin/lib/lapack/
但我希望运行该程序不需要此文件,因此我可以在不同的计算机上运行它。有人可以合作吗?
其次,当复制粘贴.exe所在文件夹中的.dll文件时,它会运行一小段时间,生成一个stackdump文件。由于“构建工作区”错误,我无法在Eclipse-Photran中使用调试器。当我想在Eclipse中作为本地Fortran程序运行它时,Eclipse会给出消息Binary not found
。有任何想法如何解决这个问题?
答案 0 :(得分:2)
问题出在这里
L/lib/lapack –llapack
尝试将其更改为
-L/lib/lapack –llapack
可能是你Makefile
。
即
gfortran -funderscoring -O3 -Wall -c -fmessage-length=0 -L/lib/lapack -llapack -o
并确保lapack.mod
确实位于/lib/lapack
,而Cygwin可能是C:\cygwin\lib\lapack
。