Fortran 链接错误消息中“(.text+0x26c4)”的含义是什么?

What is the meaing of "(.text+0x26c4)" means in fortran linking error message?

我在 LINUX ubuntu 16.04 中使用 gfortran 编译器和 ld 链接器。 当我编译一些用 Fortran 77 编写的程序时,出现以下错误消息:

libdist.a(setup.F.o): In function `setup_':
setup.F:(.text+0x26c4): undefined reference to `mpi_send_'
setup.F:(.text+0x2b3c): undefined reference to `mpi_recv_'
setup.F:(.text+0x7984): undefined reference to `mpi_send_'
setup.F:(.text+0xb107): undefined reference to `mpi_recv_'

我猜是关于错误的位置。但是,我很难找到错误在哪里。

能不能把错误的位置描述的更清楚些?如c/cxx错误:"setup.F:15:12: "

这是一个地址。并且不是 Fortran 错误。这是一个 linker 错误。您可以从 C 或 C++ 代码或任何其他由相同 link 编辑的编译代码 link 得到完全相同的错误。

生成调试符号(编译器选项 -g-ggdb 或类似选项 - 请参阅 GCC Fortran 手册中的调试选项)以获得更有意义的内容。但如果你这样做,你会意识到它只会将你指向你所在的某个位置:

  call mpi_send(...)

在一些名为 setup() 的子例程或函数中。

因此,在这种情况下它不是很有用。重要的是你应该 link 合适的 MPI 库。通常这是通过调用 mpif90mpifort 或称为 而不是 gfortran 的类似包装器来完成的。请查阅 MPI 库实现的文档。