Я пытаюсь создать языковые привязки для интерфейса передачи сообщений, но компилятор не может распознать мою ссылку на функции C ...
В настоящее время я использую gfortran в качестве компилятора в linuxмашина ... Я знаю, что языковые привязки работают, но всякий раз, когда я пытаюсь связать их с библиотекой mpi, я получаю эту ошибку:
/tmp/ccwukrNT.o: In function `MAIN__':
hello_init.f90:(.text+0x17): undefined reference to `mpi_init'
collect2: error: ld returned 1 exit status
команды для компиляции, которые я сейчас использую:
gfortran -ffree-form foo.f90 ~/dir1/dir2/bar.f90 -o <outfile> -L
/home/.fakeroot/lib -I /home/.fakeroot/include/ -lexampi
(exampi - это стандарт, над которым я сейчас работаю)
Как я уже говорил, когда я использую простые программы hello_world и компилирую все мои файлы вручную, этот метод работает, но он не работает, когда я пытаюсьи свяжите это с библиотекой.Может кто-нибудь мне помочь?
вот моя текущая привязка Фортрана для MPI_Init:
module mpi_f08
interface MPI_Init
subroutine MPI_Init(ierror) bind(C)
integer, optional, intent(out) :: ierror
end subroutine MPI_Init
end interface MPI_Init
end module mpi_f08
Я использую функцию C тривиально ... она просто взаимодействует с PMPI_Init () ... В любом случае,Связывание библиотек является основной проблемой ... Да, я извлек это из C ++.
Вот простая тестовая программа, которую я написал:
program hello_init
use mpi_f08, only : MPI_Init
implicit none
integer :: ierror
ierror = 0
call MPI_Init(ierror)
stop
end program hello_init
Я не слишком знаком с Fortran... это было дано мне как побочный проект, но оно быстро занимает всю мою неделю одновременно смеется и плачет
Спасибо!