Edd*_*ddy 10 fortran module compiler-errors fortran90
我在编译一个简单的fortran程序时遇到了麻烦,该程序在同一目录中使用了一个模块.我有2个文件:test1.f90,其中包含程序和modtest.f90,其中包含模块.
这是test1.f90:
program test
use modtest
implicit none
print*,a
end program test
Run Code Online (Sandbox Code Playgroud)
这是modtest.f90:
module modtest
implicit none
save
integer :: a = 1
end module modtest
Run Code Online (Sandbox Code Playgroud)
两个文件都在同一目录中.我像这样编译modtest.f90和test.f90:
gfortran -c modtest.f90
gfortran -o test1 test1.f90
Run Code Online (Sandbox Code Playgroud)
但后来我得到了这个错误:
/tmp/cckqu8c3.o: In function `MAIN__':
test1.f90:(.text+0x50): undefined reference to `__modtest_MOD_a'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?谢谢您的帮助
Pre*_*gha 12
你正在做的不是告诉链接器引用模块在哪里,modtest以便你的代码可以使用它的内容.
这应该工作:
gfortran -o test1 test1.f90 modtest.o
Run Code Online (Sandbox Code Playgroud)
一些背景:
该-o选项告诉编译器将完整构建(compile + link)的输出放入一个名为的程序中test1.然后我们提供一个我们要编译的文件(test1.f90).最后,我们告诉编译器考虑一个包含另一个build(modtest.o)的编译输出的文件,并将其链接到编译后的输出test1.f90,并modtest.o在尝试排序test1.f90中引用该模块的引用时使用其内容modtest(在use modtest源代码中的声明中).
所以声明说:
请编译并随后链接test1.f90到modtest.o,并生成一个名为test1最终输出的文件.
| 归档时间: |
|
| 查看次数: |
30062 次 |
| 最近记录: |