ошибка языкового связывания с Фортраном: почему он не связывается с библиотекой MPI? - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь создать языковые привязки для интерфейса передачи сообщений, но компилятор не может распознать мою ссылку на функции 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... это было дано мне как побочный проект, но оно быстро занимает всю мою неделю одновременно смеется и плачет

Спасибо!

...