Общая библиотека на Фортране, минимальный пример не работает

Я пытаюсь понять, как динамически создавать и связать общую библиотеку на Фортране под Linux.

У меня есть два файла:Первый, liblol.f90, выглядит так:

subroutine func()
    print*, 'lol!'
end subroutine func

Я компилирую его с помощьюgfortran -shared -fPIC -o liblol.so liblol.f90

Второй файл, main.f90, выглядит так:

program main
    call func()
end program main

Когда я сейчас попытаюсь скомпилируйте это с помощью команды gfortran -L. -llol main.f90 -o main, я получаю следующую ошибку:

/tmp/ccIUIhcE.o: In function `MAIN__':
main.f90:(.text+0xa): undefined reference to `func_'
collect2: ld returned 1 exit status

Я не понимаю, почему он говорит «неопределенная ссылка», так как вывод nm -D liblol.soдает мне это:

                 w _Jv_RegisterClasses
0000000000201028 A __bss_start
                 w __cxa_finalize
                 w __gmon_start__
0000000000201028 A _edata
0000000000201038 A _end
0000000000000778 T _fini
                 U _gfortran_st_write
                 U _gfortran_st_write_done
                 U _gfortran_transfer_character_write
0000000000000598 T _init
00000000000006cc T func_

Нужен ли какой-либо другой параметр?

9
задан Markus 12 April 2012 в 13:46
поделиться