无法在代码块13.12中编译.f(fortran文件)

时间:2014-11-07 05:13:55

标签: fortran codeblocks gfortran

我正在尝试在Windows 8上的Code :: Blocks中执行fortran代码

   program main
   write (*,*) "hi"
   stop
   end

我得到的错误是

G:\Study\Programs\bairstow.o:bairstow.f undefined reference to `_gfortran_st_write'
G:\Study\Programs\bairstow.o:bairstow.f undefined reference to `_gfortran_transfer_character_write'
G:\Study\Programs\bairstow.o:bairstow.f undefined reference to `_gfortran_st_write_done'
G:\Study\Programs\bairstow.o:bairstow.f undefined reference to `_gfortran_stop_string'
G:\Study\Programs\bairstow.o:bairstow.f undefined reference to `_gfortran_set_args'
G:\Study\Programs\bairstow.o:bairstow.f undefined reference to `_gfortran_set_options'
=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===

我将.f文件复制粘贴到编译器本身的文件夹中并执行命令

gfortran.exe hello.f

成功生成并执行输出.exe文件。 我不确定我是否在C :: B中正确设置了编译器。我可能会缺少什么?

更新: 正如janneb所建议的,我添加了链接器库路径以便使用libgfortran-3.dll。 使用以下构建日志成功编译该文件:

mingw32-g++.exe   -c G:\Study\Programs\bairstow.f -o G:\Study\Programs\bairstow.o
mingw32-g++.exe  -o G:\Study\Programs\bairstow.exe G:\Study\Programs\bairstow.o   "C:\Program Files (x86)\CodeBlocks\MinGW\bin\libgfortran-3.dll"
Process terminated with status 0 (0 minute(s), 1 second(s))
0 error(s), 0 warning(s) (0 minute(s), 1 second(s))

当我执行文件时,等待大约2分钟后,我收到以下错误: enter image description here 我在链接库文件时犯了什么错误吗?

提示:它也搞砸了我的GNU C编译器。现在即使在取消链接libgfortran-3.dll之后,我也无法执行简单的helloWorld.c程序。

3 个答案:

答案 0 :(得分:2)

打开C :: B IDE并转到"设置"并选择" GNU Fortran编译器"从选定的编译器和Clik按钮"设置为默认"最后点击"确定"

答案 1 :(得分:1)

根据错误消息,在通过C :: B进行编译时,您不会链接GFortran运行时库(libgfortran)。 gfortran.exe驱动程序自动处理这个,所以很可能你用gcc.exe编译,基于文件扩展名的gcc.exe可以调用Fortran编译器(f951),但不做链接的东西。 gfortran.exe可以。

无论如何,我从来没有在Windows上使用C :: B和gfortran,但希望上面的解释能给你一个提示,从哪里开始寻找。

答案 2 :(得分:0)

就我而言,我不得不执行其他步骤。转到Project-> Build options->,同时选择GNU Fortran编译器。