什么是“(。text + 0x26c4)”意味着在fortran中链接错误消息?

时间:2017-08-06 17:38:32

标签: fortran linker-errors gfortran undefined-reference

我在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:”

1 个答案:

答案 0 :(得分:4)

这是一个地址。并且不是Fortran错误。这是一个链接器错误。您可以从C或C ++代码或由同一链接器链接的任何其他编译代码中获得完全相同的错误。

生成调试符号(编译器选项count = 0 if ['location'] is not None: for media in search: count = count + 1 print count -g或类似 - 请参阅GCC Fortran手册中的调试选项)以获得更有意义的内容。但是如果你这样做,你会发现它只会指向你所在的位置:

-ggdb

在一些名为 call mpi_send(...) 的子程序或函数中。

因此,在这种情况下,它并不是非常有用。重要的是你应该链接适当的MPI库。通常,这可以通过调用setup()mpif90或类似的而不是mpifort 的包装来完成。请参阅MPI库实现的文档。