2017-08-06 3 views
1

J'utilise le compilateur gfortran et le lieur ld dans LINUX ubuntu 16.04. Quand je suis programme écrit La compilation de Fortran 77, j'ai le message d'erreur suivant:Quelle est la signification de "(.text + 0x26c4)" dans un message d'erreur de liaison fortran?

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_' 

Je suppose qu'il est sur la position de l'erreur. Cependant, il est difficile pour moi de trouver où se trouve l'erreur. Puis-je avoir une meilleure présentation de la position de l'erreur?

Comme l'erreur c/cxx: "setup.F: 15: 12:"

+1

Essayez d'inclure l'option de compilation '-g' dans votre commande de compilation. –

Répondre

4

C'est une adresse. Et ce n'est pas une erreur Fortran. C'est une erreur de lien. Vous pouvez obtenir la même erreur à partir d'un code C ou C++ ou de tout autre code compilé lié par le même éditeur de liens.

Générer des symboles de débogage (option du compilateur -g ou -ggdb ou similaire - consultez les options de débogage dans le manuel GCC Fortran) pour obtenir quelque chose de plus significatif. Mais si vous faites cela, vous vous rendrez compte que cela ne vous pointe vers un emplacement où vous faites:

call mpi_send(...) 

dans une sous-routine ou une fonction appelée setup().

Donc, ce n'est pas très utile dans ce cas. L'important est que vous deviez lier la bibliothèque MPI appropriée. Normalement cela est fait en appelant mpif90 ou mpifort ou un emballage similaire qui est appelé au lieu de gfortran. Consultez la documentation de votre implémentation de bibliothèque MPI.