gpt4 book ai didi

module - Fortran 90编译问题: undefined reference to

转载 作者:行者123 更新时间:2023-12-01 23:10:32 25 4
gpt4 key购买 nike

我在尝试编译一个使用同一目录中的模块的简单 fortran 程序时遇到问题。我有 2 个文件:包含程序的 test1.f90 和包含模块的 modtest.f90。

这是 test1.f90:

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

这是 modtest.f90:

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

两个文件位于同一目录中。我像这样编译 modtest.f90 和 test.f90:

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

但是我收到了这个错误:

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

我有什么遗漏的吗?感谢您的帮助

最佳答案

您所做的并不是告诉链接器引用模块modtest在哪里,以便您的代码可以使用其内容。

这应该有效:

gfortran -o test1 test1.f90 modtest.o

一些背景:

-o 选项告诉编译器将完整构建(编译 + 链接)的输出放入名为 test1 的程序中。然后我们提供一个要编译的文件(test1.f90)。最后,我们告诉编译器考虑一个包含另一个构建的编译输出 (modtest.o) 的文件,并将其链接到 test1.f90 的编译输出,并在尝试整理 test1.f90 中引用模块 modtest 的引用时使用 modtest.o 的内容(在语句 use modtest 中) > 在源代码中)。

所以声明说:

请编译并随后将 test1.f90 链接到 modtest.o,并生成一个名为 test1 的文件作为最终输出。

关于module - Fortran 90编译问题: undefined reference to <modulename>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3904814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com