无法编译Fortran模块:未定义的符号_main

时间:2017-11-02 17:29:49

标签: module fortran gfortran fortran90

我最近一直在尝试在Fotran中使用库,但我一直收到此错误消息

  

架构x86_64的未定义符号:     " _main",引自:        主要可执行文件的隐式输入/启动   ld:找不到架构x86_64的符号   collect2:错误:ld返回1退出状态

我找不到任何特定的解决方案。在这种情况下,我正在处理我自己构建的一些库(这个问题发生在静态和共享库中)来自我为测试目的而编写的简单模块。

我决定只尝试这些模块,并且我不断获得与我使用的模块相同的错误消息。我想知道是否有人可以帮我告诉我是否使用了错误的语法。这是模块

module modulo1

IMPLICIT NONE

real, parameter:: pi=3.1415

end module modulo1

这是主要的

program teste

use modulo1

IMPLICIT NONE

real :: r = 2

write (*,*) 'Área: ', pi*r**2

end program teste

这些是我用来编译的命令

gfortran -c modulo1.f90
gfortran -c teste.f90
gfortran -o teste.o modulo1.o

1 个答案:

答案 0 :(得分:0)

您的编辑已损坏。命令

gfortran -o teste.o modulo1.o

告诉gfortran从名为teste.o的目标文件中创建一个名为modulo1.o的可执行文件。由于该模块文件不包含program,因此编译器无法找到它正在尝试构建的可执行文件的入口点。 -o选项的参数是要构建的可执行文件的名称。

您可能应该用

之类的内容替换该语句
gfortran -o test teste.o modulo1.o

将构建一个名为test的可执行文件。

从长远来看,了解如何使用make或其他构建系统。