Fortran 90 compiling issue: undefined reference to <modulename>

帅比萌擦擦* 提交于 2019-12-21 03:58:23

问题


I'm having trouble trying to compile a simple fortran program which uses a module in the same directory. I have 2 files: test1.f90 which contains the program and modtest.f90 which contains the module.

This is test1.f90:

program test
  use modtest
  implicit none
  print*,a
end program test

This is modtest.f90:

module modtest
  implicit none
  save
  integer :: a = 1
end module modtest

Both files are in the same directory. I compile modtest.f90 and test.f90 like this:

gfortran -c modtest.f90
gfortran -o test1 test1.f90

But then I get this error:

/tmp/cckqu8c3.o: In function `MAIN__':
test1.f90:(.text+0x50): undefined reference to `__modtest_MOD_a'
collect2: ld returned 1 exit status

Is there something I'm missing? Thanks for the help


回答1:


What you're doing is not telling the linker where reference module modtest is so that the your code can use its contents.

This should work:

gfortran -o test1 test1.f90 modtest.o

Some context:

The -o option tells the compiler to put the output of the full build (compile + link) into a program called test1. Then we supply a file that we are to compile (test1.f90). Finally we are telling the compiler to consider a file that contains the compiled output of another build (modtest.o) and to link this to the compiled output of test1.f90, and use the contents of modtest.o when trying to sort out references within the test1.f90 that reference the module modtest (in the statement use modtest in the source code).

So the statement says:

Please compile and subsequently link test1.f90 to modtest.o, and produce a file called test1 as the final output.



来源:https://stackoverflow.com/questions/3904814/fortran-90-compiling-issue-undefined-reference-to-modulename

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!